Mam tabeli przechowywanych w SQL Server, które mam nadzieję, aby kwerendy przy użyciu LINQ. Niejasny opis tabeli:Znajdź wiersz z maksymalną wartością dla każdego klucza
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'
Jestem zainteresowany tylko w rzędach gdzie ID2
jest największa wartość za ID1
Przykład pożądane rezultaty:
1 | 4 | 'Cheap'
2 | 3 | 'Wan wan'
I mają pochodzić z tego kodu SQL:
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
Podczas implementacji w LINQ wymagane jest również dodatkowe zapytanie? Oznacza to, zapytanie do bazy danych i załadować zmienną z wynikami "zapytania wewnętrznego", a następnie zapytać o tę samą tabelę, ale porównać z wartościami z "zapytania wewnętrznego"? Wiem, że jeśli będę majstrować przy tym przez jakiś czas, w końcu to dostanę, ale wydaje mi się, że prawdopodobnie jest jakiś wymyślny sposób, aby to zrobić w LINQ naprawdę łatwo.
Pożądana odpowiedź wykorzysta składnię metody rozszerzenia.
Bonus: Czy istnieje jakiś typ standardowej składni LINQ do konwertera składni metody rozszerzającej? Jakich narzędzi używasz do gry z instrukcjami LINQ? Wydaje mi się nieco kłopotliwe, aby wymagać całego C# (ASP.NET MVC dla mnie) do odtwarzania z zapytaniem LINQ.
LinqPad jest świetny do gry z instrukcjami LINQ! http://www.linqpad.net/ (I ogólnie z obsługą kodu C#) – driis
Zdecydowanie zdobądź kopię [** LINQPad **] (http://www.linqpad.net/). – mellamokb