linq中的值不同 [英] Distinct values in linq
问题描述
我尝试linq查询
< asp:DropDownList ID =regiondroprunat =serverAutoPostBack =True
onselectedindexchanged =regiondrop_SelectedIndexChanged>
我尝试在页面加载的下拉列表中显示不同的值。我尝试这个查询来获得
我尝试过:
价值
T1茶=新T1();
var list1 = tea.t1.ToList();
var list =(from list in list1
orderby ta.Region
select new {ta.Region,ta.RegionID})。Distinct()。ToList() ;
但这显示了所有相同的值,因为我想要不同的值
我的方案数据中的
是
RID地区
1巴黎
2加拿大
3英国
4巴黎
5加拿大
伦敦
因此在加拿大和巴黎2次所以我希望这次1次在下拉菜单中
任何解决方案?
尝试将它们分组:
列表< T1> list1 = new 列表< T1>();
list1.Add( new T1 {RegionID = 1 ,Region = Paris});
list1.Add( new T1 {RegionID = 2 ,Region = Canada});
list1.Add( new T1 {RegionID = 3 ,Region = UK});
list1.Add( new T1 {RegionID = 4 ,Region = Paris});
list1.Add( new T1 {RegionID = 5 ,Region = Canada});
list1.Add( new T1 {RegionID = 6 ,Region = London});
var list = 来自 ta list1
group ta by ta.Region into newgroup
orderby newgroup.Key
选择 newgroup;
foreach ( var t in list)
{
T1 t1 = t.First();
Console.WriteLine( {0}:{1},t1.RegionID, t1.Region);
}
试试这个
var list1 = tea.t1.ToList();
Dictionary< int,string> dict = new Dictionary< int,string>();
foreach ( var item in list1.OrderBy(k => k.Region))
{
if (!dict.ContainsValue(item.Region))
dict.Add(item.RegionID,item.Region);
}
var output = dict.Select(k = > new {RegionId = k.Key,Region = k.Value})。ToList();
egiondrop.DataSource = output;
regiondrop.DataTextField = Region;
regiondrop.DataValueField = RegionId;
regiondrop.DataBind();
Lambda解决方案:
T1 tea = new T1();
var list = tea.t1.GroupBy(x => x.Region)
。选择(grp => new
{
RegionId = grp.First(),
Region = grp.Key
})
.ToList();
// 进一步
regiondrop.DataSource = list;
I try linq query
<asp:DropDownList ID="regiondrop" runat="server" AutoPostBack="True"
onselectedindexchanged="regiondrop_SelectedIndexChanged">
I try to show distinct values in drop-down on page load. I try this query to get
What I have tried:
values
T1 tea = new T1();
var list1 = tea.t1.ToList();
var list = (from ta in list1
orderby ta.Region
select new { ta.Region,ta.RegionID }).Distinct().ToList();
but this shows all same values where as i want distinct values
in my scenario data is
RID Region
1 Paris
2 Canada
3 UK
4 Paris
5 Canada
6 London
so in this Canada and Paris 2 times so i want this 1 time in drop-down
any solution?
Try Grouping them:
List<T1> list1 = new List<T1>(); list1.Add(new T1 { RegionID = 1, Region = "Paris" }); list1.Add(new T1 { RegionID = 2, Region = "Canada" }); list1.Add(new T1 { RegionID = 3, Region = "UK" }); list1.Add(new T1 { RegionID = 4, Region = "Paris" }); list1.Add(new T1 { RegionID = 5, Region = "Canada" }); list1.Add(new T1 { RegionID = 6, Region = "London" }); var list = from ta in list1 group ta by ta.Region into newgroup orderby newgroup.Key select newgroup; foreach (var t in list) { T1 t1 = t.First(); Console.WriteLine("{0}:{1}", t1.RegionID, t1.Region); }
try this
var list1 = tea.t1.ToList(); Dictionary<int, string> dict = new Dictionary<int, string>(); foreach (var item in list1.OrderBy(k=>k.Region)) { if(!dict.ContainsValue(item.Region)) dict.Add(item.RegionID, item.Region); } var output = dict.Select(k => new { RegionId = k.Key, Region = k.Value }).ToList(); egiondrop.DataSource = output; regiondrop.DataTextField = "Region"; regiondrop.DataValueField = "RegionId"; regiondrop.DataBind();
Lambda solution:
T1 tea = new T1(); var list = tea.t1.GroupBy(x=>x.Region) .Select(grp=>new { RegionId = grp.First(), Region = grp.Key }) .ToList(); //further regiondrop.DataSource = list;
这篇关于linq中的值不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!