Biorąc pod uwagę następujące zapisy:
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
Chcę pogrupować według F1
pola i posortować według Id
i pobrać wszystkie pola z pierwszego rekordu grupy podobnej do tych rekordów:
Id F1 F2 F3
-------------------------------------------------
1 Nima 1990 10
4 John 2001 1
6 Sara 2010 4
Jak mogę to zrobić za pomocą linq?
c#
linq
c#-4.0
linq-to-entities
ariański
źródło
źródło
OrderBy(p => p.Id)
, chcieli, żeby to było uporządkowane według dowodu osobistego, a nie kolumny roku.źródło
.GroupBy(x=>x.F1).Select(g=>...)
, może wydawać się łatwiejsze do zrozumienia..First()
z.FirstOrDefault()
lub dostaniesz wyjątek:The method 'First' can only be used as a final query operation. Consider using the method 'FirstOrDefault' in this instance instead.
.First()
. Pytanie OP wygląda tak, jakby po prostu dbał o łączenie się z obiektem, chociaż oznaczył je również tagiemlinq-to-entities
(nie jestem pewien, czy rozumiał, co to jest).Awnser @Alireza jest całkowicie poprawny, ale musisz to zauważyć, używając tego kodu
który jest podobny do tego kodu, ponieważ porządkujesz listę, a następnie grupujesz, więc otrzymujesz pierwszy wiersz grup
Teraz, jeśli chcesz zrobić coś bardziej złożonego, na przykład wziąć ten sam wynik grupowania, ale wziąć pierwszy element F2 i ostatni element F3 lub coś bardziej niestandardowego, możesz to zrobić, studiując poniższy kod
Więc dostaniesz coś takiego
źródło
Użyj go, aby osiągnąć to, czego chcesz. Następnie zdecyduj, które właściwości chcesz zwrócić.
źródło