Ho una tabella memorizzata in SQL Server che spero di eseguire una query utilizzando LINQ. Una descrizione vaga della tabella:Trova riga con valore massimo per ogni chiave
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'
Sono interessato solo righe in cui ID2
è il massimo valore per ID1
Esempio desiderata risultati:
1 | 4 | 'Cheap'
2 | 3 | 'Wan wan'
sono venuto con questo codice 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
Quando si implementa in LINQ, è anche necessario avere una query secondaria? Cioè, interrogare il database e caricare una variabile con i risultati della "query interna", quindi eseguire una query sulla stessa tabella ma confrontarla con i valori della "query interna"? So se armeggiare con questo per un po ', lo otterrò alla fine, ma mi sembra che ci sia probabilmente un modo elegante per farlo in LINQ molto facilmente.
La risposta desiderata utilizzerà la sintassi del metodo di estensione.
Bonus: Esiste un tipo di sintassi LINQ standard al convertitore di sintassi del metodo di estensione? Quali strumenti usi per giocare con le dichiarazioni LINQ? Mi sembra un po 'ingombrante richiedere un intero C# (ASP.NET MVC per me) per giocare con una query LINQ.
LinqPad è fantastico per giocare con le istruzioni LINQ! http://www.linqpad.net/ (E anche in generale con il codice C#) – driis
Ottieni sicuramente una copia di [** LINQPad **] (http://www.linqpad.net/). – mellamokb