2012-05-10 4 views
0

Je retourne actuellement une liste en utilisant les suivantesSélection Distinct lignes LINQ

Test.GetPrevList(Current.Id, UserId); 

Cette liste a 5 colonnes User ID First Name Last Name Department Week

Ce que je remarque est que si un les employés ont changé de département, ils apparaîtront deux fois sur la liste. Ce que je veux faire est de sélectionner l'enregistrement le plus récent basé sur la colonne de semaine la plus récente, en utilisant Linq car la procédure stockée est utilisée plusieurs fois.

+0

Plus code S'il vous plaît. Structure exacte s'il vous plaît. "La liste a 4 colonnes" '. Qu'est-ce que c'est? –

Répondre

3

Vous pouvez commander les utilisateurs par semaine, puis de les regrouper par Id et sélectionnez le premier utilisateur dans chaque groupe:

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

utilisation d'un simple appel LINQ trop Distinct()

Distinct peut également être utilisé avec IEqualityComparer, comme

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

UserComparer une classe qui implémente une logique de comparaison personnalisée.

+0

Cela n'aidera pas à sélectionner le dernier enregistrement. – Rawling