Compte tenu des enregistrements suivants:
Id F1 F2 F3
-------------------------------------------------
1 Nima 1990 10
2 Nima 1990 11
3 Nima 2000 12
4 John 2001 1
5 John 2002 2
6 Sara 2010 4
Je souhaite regrouper en fonction du F1
champ et trier Id
et obtenir tous les champs du premier enregistrement du groupe similaire à ces enregistrements:
Id F1 F2 F3
-------------------------------------------------
1 Nima 1990 10
4 John 2001 1
6 Sara 2010 4
Comment puis-je faire cela en utilisant linq?
c#
linq
c#-4.0
linq-to-entities
Ariane
la source
la source
OrderBy(p => p.Id)
, ils voulaient qu'il soit trié par ID et non par colonne d'année.la source
.GroupBy(x=>x.F1).Select(g=>...)
, cela peut sembler plus facile à comprendre..First()
par.FirstOrDefault()
ou vous obtiendrez l'exception:The method 'First' can only be used as a final query operation. Consider using the method 'FirstOrDefault' in this instance instead.
.First()
. La question de l'OP ressemble vraiment à se soucier simplement de linq-to-object, bien qu'il ait également tagué la question aveclinq-to-entities
(pas sûr s'il a compris ce que c'est).Le awnser de @Alireza est totalement correct, mais vous devez remarquer que lorsque vous utilisez ce code
qui est similaire à ce code parce que vous commandez la liste, puis faites le regroupement pour obtenir la première ligne de groupes
Maintenant, si vous voulez faire quelque chose de plus complexe comme prendre le même résultat de regroupement mais prendre le premier élément de F2 et le dernier élément de F3 ou quelque chose de plus personnalisé, vous pouvez le faire en étudiant le code ci-dessous
Donc, vous obtiendrez quelque chose comme
la source
Utilisez-le pour réaliser ce que vous voulez. Ensuite, décidez quelles propriétés vous souhaitez retourner.
la source