2 bölüm anahtarına sahip bir tablom var; Bir ID sütunu ve bir sürüm numarası. Kayıtların sadece en son sürümünü seçmeye çalışıyorum.Neden bu LINQ Grubu değil vb.net satırları toplayarak?
GROUP BY elde etmek için LINQ ifade stilini kullanmaya çalışıyorum ve Sürümün toplam MAX değerini dışarı çekiyorum. Ancak, hiçbir toplama gerçekleşmiyor.
Özet Kodu:
From C In Credentials
Group Join ....
Group Join ....
Group C.CredentialID, NE.ClientID, C.Version By
NE.ClientID, C.CredentialID Into CGroup = Group
From CG In CGroup
Select New With {
.ClientID = CG.ClientID,
.CredentialID = CG.CredentialID,
.MaxVersion = CGroup.Max(Function(p) p.Version)
}
Gerçek Sonuçlar:
ClientID CredentialID MaxVersion
1196 1 3
1196 1 3
1196 1 3
1196 2 1
İstenilen Sonuçlar:
ClientID CredentialID MaxVersion
1196 1 3
1196 2 1
Ayrıca çalıştı, aynı sonuçları:
Group C By Key = New With
{Key NE.ClientID, Key C.CredentialID} Into CGroup = Group
From CG In CGroup
Select New With {
.ClientID = Key.ClientID,
.CredentialID = Key.CredentialID,
.MaxVersion = CGroup.Max(Function(p) p.Version)
}
ben eşleşen özelliklerini ve özel sıralama/gruplama fonksiyonları ile özel sınıfları oluşturma içerir olmayan bir çözüm arıyorum ve kuyruk ucunda lambda ifadeleri kullanmaz Sorunun
Teşekkürler!
Vay, Gününüzü Kaydetme Yolu –
Bu önemli bilgi birikimini nerede öğrendiğinizi sorabilir miyim? –
Temelde System.Linq.Enumerable ve System.Linq.Queryable için msdn başvurularının üzerine dökülmesinden. Lambda sözdizimini kullanmaktan korkmayın, derleyici yazdıklarınızı yine de ona çevirir. –