Как извлечь коллекцию отдельных значений из списка <T>пользовательских объектов? - PullRequest
3 голосов
/ 07 июня 2011

У меня есть список объектов - скажем, они заказы.

Заказать
OrderID<br> Date<br> SalesmanId<br> ...

Я хочу извлечь Distinct список SalesmanId с из этого списка. Каков наилучший способ сделать это? Я не предполагаю, что он проходит вручную ... не так ли?

UPDATE Спасибо за ваши ответы. Я подумал о дополнительном требовании (обрисованном в общих чертах после ответа Джона Скитса) и закодировал его так:

var salesusers = from s in lstOrders 
                 group s by new { s.SalesUserId,s.Username} 
                 into g  
                 select new { UserName = g.Key.Username, UserId = g.Key.SalesUserId };

Это работает, но я не уверен, является ли это правильным подходом или я не в курсе?

Спасибо.

ОБНОВЛЕНИЕ № 2: Этот бегал и бегал - новички, как я, могли бы найти ответы на этот связанный вопрос также полезным.

Ответы [ 2 ]

12 голосов
/ 07 июня 2011

Если вам нужно только получить SalesmanIds, это просто:

var salesmanIds = orders.Select(x => x.SalesmanId)
                        .Distinct();

Позвоните ToList(), если вам это нужно как List<T>.

Вам нужна директива using для System.Linq.

РЕДАКТИРОВАТЬ: Хорошо, чтобы получить имя и идентификатор, вы можете использовать:

var salesmanIds = orders.Select(x => new { x.SalesmanId, x.UserName })
                        .Distinct();
3 голосов
/ 07 июня 2011

Я бы предпочел так:

Реализовать интерфейс IEqualityComparer<T> для Заказ (просто, чтобы вы могли их правильно сравнить.

Тогда просто сделайте:

IEnumerable<Order> myDistinctOrders = oredersList.Distinct();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...