linq中的值不同 [英] Distinct values in linq

查看:57
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆