ho trascorrere qualche ora cercando di tradurre semplice SQL per lambda LINQTradurre SQL per lambda LINQ con GroupBy e media
SELECT ID, AVG(Score) FROM myTable
GROUP BY ID
Qualche idea?
ho trascorrere qualche ora cercando di tradurre semplice SQL per lambda LINQTradurre SQL per lambda LINQ con GroupBy e media
SELECT ID, AVG(Score) FROM myTable
GROUP BY ID
Qualche idea?
from t in myTable
group t by new {
t.ID
} into g
select new {
Average = g.Average(p => p.Score),
g.Key.ID
}
o Lambda
myTable.GroupBy(t => new {ID = t.ID})
.Select (g => new {
Average = g.Average (p => p.Score),
ID = g.Key.ID
})
var _result = from a in myTable
group a by a.ID into g
select new
{
ID = g.Key.ID,
AverageResult = g.Average(x => x.Score)
}
Si noti che 'g.Key.ID' non esiste e non verrà compilato. In questo frammento è necessario solo "g.Key". –
@AnthonyPegram perché non verrà compilato? L'ho appena provato –
Questa versione? Si dovrebbe ottenere un messaggio di errore indicando approssimativamente che "" int "non contiene una definizione per" ID "e nessun metodo di estensione" ID "che accetta ..." (Sostituendo "int" per qualunque sia il tipo di proprietà effettivo per ID). il punto è che 'g.Key' * è * l'ID. Non è un oggetto che contiene una proprietà ID. –
L'equivalente in Linq-to-Objects è simile al seguente.
var results = from row in myTable
group row by row.Id into rows
select new
{
Id = rows.Key,
AverageScore = rows.Average(row => row.Score)
};
È solo leggermente diverso per un quadro di entità ORM simile. Vale a dire, è necessario passare attraverso il contesto dati o un appropriato DbSet/ObjectSet.
in quale lingua in ogni caso? :) – spajce