Considerando los siguientes registros:
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
Quiero agrupar según el F1
campo y ordenar Id
y obtener todos los campos del primer registro de grupo similar a estos registros:
Id F1 F2 F3
-------------------------------------------------
1 Nima 1990 10
4 John 2001 1
6 Sara 2010 4
¿Cómo puedo hacer esto usando linq?
c#
linq
c#-4.0
linq-to-entities
arriano
fuente
fuente
OrderBy(p => p.Id)
, querían que se ordenara por ID, no por la columna del año.fuente
.GroupBy(x=>x.F1).Select(g=>...)
, Puede parecer más fácil de entender..First()
con.FirstOrDefault()
u obtendrá la excepción:The method 'First' can only be used as a final query operation. Consider using the method 'FirstOrDefault' in this instance instead.
.First()
. La pregunta del OP parece realmente preocuparse por linq-to-object, aunque también etiquetó la pregunta conlinq-to-entities
(no estoy seguro de si entendió qué es eso).El principio de @Alireza es totalmente correcto, pero debe tener en cuenta que al usar este código
que es similar a este código porque ordenas la lista y luego haces la agrupación para obtener la primera fila de grupos
Ahora, si desea hacer algo más complejo como tomar el mismo resultado de agrupación pero tomar el primer elemento de F2 y el último elemento de F3 o algo más personalizado, puede hacerlo estudiando el código a continuación
Entonces obtendrás algo como
fuente
Úselo para lograr lo que quiere. Luego, decida qué propiedades desea devolver.
fuente