SQL Server'da LINQ kullanarak sorgulamayı umduğum bir tablom var. Tablonun bir belirsiz açıklama:Her bir anahtar için maksimum değere sahip satırı bulun
ID1 | ID2 | SomeData
-----------------------------
1 | 1 | 'Moo'
1 | 2 | 'Meow'
1 | 3 | 'Woof'
1 | 4 | 'Cheap'
2 | 1 | 'Quack'
2 | 2 | 'Grrrrr'
2 | 3 | 'Wan wan'
Ben sıralar halinde sadece ilgileniyorum ID2
ID1
Örnek sonuçları istenilen başına en büyük değerdir:
1 | 4 | 'Cheap'
2 | 3 | 'Wan wan'
bu SQL kodu ile geldi:
SELECT *
FROM SomeTable a
INNER JOIN
(
SELECT ID1, MAX(ID2) as SomeName
FROM SomeTable
GROUP BY ID1
) as b
ON a.ID1 = b.ID1 and a.ID2 = b.SomeName
LINQ uygulamasında uygulandığında, ayrıca bir alt sorgusuna sahip olmanız mı gerekir? Yani, veritabanını sorgulayın ve 'iç sorgu' sonuçlarıyla bir değişken yükleyin, ardından aynı tabloyu sorgulayın, ancak 'iç sorgu'dan gelen değerlerle karşılaştırın? Bunu bir süreliğine tamir edip edemeyeceğimi biliyorum, sonunda alacağım, ama sanırım LINQ'da bunu yapmak gerçekten hoş bir yol olabilir.
İstenen yanıt, uzantı yöntemi sözdizimini kullanacaktır.
Bonus: Uzantı yöntemi sözdizimi dönüştürücüsüne herhangi bir standart LINQ sözdizimi türü var mı? LINQ ifadeleriyle oynamak için hangi araçları kullanıyorsunuz? Bana bir LINQ sorgusu ile oynamak için tüm C# (ASP.NET MVC benim için) gerektirecek biraz hantal görünüyor.
LinqPad, LINQ deyimleriyle oynamak için harika! http://www.linqpad.net/ (Ve genel olarak C# kodu ile de oynuyor) – driis
Kesinlikle [** LINQPad **] 'nin bir kopyasını alın (http://www.linqpad.net/). – mellamokb