2012-05-10 11 views
0

В настоящее время я возвращающую список, используя следующиеВыбор различных строк Использование Linq

Test.GetPrevList(Current.Id, UserId); 

Этот список 5 колонок User ID First Name Last Name Department Week

То, что я заметил, что если сотрудники переключали отделы, они будут отображаться дважды в списке.

Что я хочу сделать, это выбрать самую последнюю запись, основанную на последнем столбце недели, используя Linq, поскольку хранимая процедура используется несколько раз.

+0

Больше коду Пожалуйста. Точная структура, пожалуйста. «Список имеет 4 столбца». Что это? –

ответ

3

Вы можете заказать пользователь за неделей, а затем сгруппировать их по идентификатору и выбрать первый пользователь в каждой группе:

var userList = Test.GetPrevList(Current.Id, UserId); 
var users = userList.OrderByDescending(x => x.Week) 
        .GroupBy(x => x.UserId) 
        .Select(x => x.First()); 
1

использование простой LINQ вызов слишком Distinct()

Distinct может использоваться также с IEqualityComparer, как

IEnumerable<User> users = users.Distinct(new UserComparer()); 

где UserComparer класс, который реализует некоторые пользовательские сравнения логики.

+0

Это не поможет выбрать последнюю запись. – Rawling

Смежные вопросы