2015-10-14 2 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);