我想寫一個查詢來查找組中的一個項目,按行業和重量分組,然後從這個我必須得到的地方重量是最大和平衡是馬克斯太 這是例子:Linq:從其他羣組中選擇第一個項目
var data = new[] {
new {ID = 1, Industry = 2, Weight = 2, Balance = 500},
new {ID = 2, Industry = 2, Weight = 2, Balance = 300},
new {ID = 3, Industry = 2, Weight = 1, Balance = 100},
new {ID = 5, Industry = 4, Weight = 1, Balance = 100},
new {ID = 6, Industry = 4, Weight = 2, Balance = 150},
new {ID = 7, Industry = 4, Weight = 1, Balance = 300},
};
var res = from a in data group a by new {a.Industry, a.Weight} into g
let ID = g.First().ID
let Balance = g.Max(a => a.Balance)
select new { ID, g.Key.Industry, g.Key.Weight, Balance};
Console.WriteLine(res);
因此,作爲結果,我應該得到的只是兩個記錄
ID Industry Weight Balance
1 2 2 500
6 4 2 150
但上面的查詢我得到了4條 有什麼建議?
問候, 德米特里
你打算如何獲得ID 4?它甚至不存在。你會得到4條記錄,因爲有4種工業和重量的組合。 –
對不起,是的。第二項應該是 Id = 6,行業= 4,權重= 2,餘額= 150 – user1394373
您誤解了分組的工作方式。你是由兩個字段組成的。鑑於數據,這兩個領域有四種不同的組合,所以你會得到四個組(因此四個記錄)。阿爾賓展示了你如何獲得這兩個期望的記錄。否則,你如何解釋它,這是沒有道理的。 –