2015-10-14 42 views
0

我有一个记录表,列出了我们客户收到的所有更新。在该列中,公司代码可以多次列出。我需要获得列表中所有可用代码的列表,但只显示一次。获取Combobox公司代码的单个值列表

这里是我的专栏:

enter image description here

我想查询列,只返回:

DEM 
FRK 

而不是:

DEM 
DEM 
DEM 
FRK 

我可以查询名单如下:

private void PopulateCompanyCodes() 
{ 
    var entity = new SuburbanWebServiceEntities(); 
    var qry = from x in entity.UpdateLogs 
      select x.CompanyCode; 

    comboBox_CompanyCodes.Items.Add(string.Empty); 
    foreach (var cc in qry.ToList()) 
    { 
    comboBox_CompanyCodes.Items.Add(cc); 
    } 
    comboBox_CompanyCodes.Text = string.Empty; 
} 

但当然,我越来越DEM多次列出:

enter image description here

有没有办法来得到第一个列表,只显示一次的组合框每个项目?

谢谢!

+1

您需要使用distinct为 http://stackoverflow.com/questions/5608127/distinct-in-linq – thinkindeveloper

回答

1

你有没有试过这样做。使用Distinct删除重复项。通过

foreach (var cc in qry.Distinct().ToList()) 
+1

简单而伟大的工作! tyvm! – ErocM

3

使用Distinct。你必须切换到method syntax,但这没什么大不了的。

var qry = entity.UpdateLogs.Select(l => l.CompanyCode).Distinct(); 

comboBox_CompanyCodes.Items.Add(string.Empty); 
foreach (var cc in qry.ToList()) 
{ 
    comboBox_CompanyCodes.Items.Add(cc); 
} 
0

用组:

var qry = entity.UpdateLogs.GroupBy(l => l.CompanyCode);