我的邏輯是這樣的:實體拉姆達,通過一些列組,並選擇更多的列
db.table.GroupBy(t => new { t.A, t.B}).Select(t => new { t.A, t.B, t.C, t.D});
起初,我還以爲Distinct()
有點幫助,但絕對不是。
請參閱...我想只採取A and B
的不同組合,但選擇A, B, C, D
。
我的邏輯是這樣的:實體拉姆達,通過一些列組,並選擇更多的列
db.table.GroupBy(t => new { t.A, t.B}).Select(t => new { t.A, t.B, t.C, t.D});
起初,我還以爲Distinct()
有點幫助,但絕對不是。
請參閱...我想只採取A and B
的不同組合,但選擇A, B, C, D
。
要獲得A
的獨特組合和B
您剛剛從Key
財產得到他們,那麼你必須決定你想要的C
和D
值。在這裏,我只是將它們從第一行中拉出來,每個組合都是A
- B
,但您可以執行其他聚合,如Min
,Max
或Average
。
db.table.GroupBy(t => new {t.A, t.B})
.Select(g => new {g.Key.A, g.Key.B, g.First().C, g.First().D});
關鍵是要明白,GroupBy
給你一個IEnumerable<IGrouping<TKey, TResult>>
和IGrouping<TKey, TResult>
是IEnumerable<TResult>
並具有TKey
型Key
財產。因此,您在Select
中使用的lambda正在處理根據您分組的內容而具有Key
的東西,並且它是按照該唯一鍵值進行分組的所有項目/行的集合。
哈...當然,我必須使用agregate。我期待什麼...甚至不必嘗試,這將工作。分組了iEnumerable,明白了,它看起來就像一個詞典。 –
對於A和B的獨特組合,你想要C和D的值嗎?像A1; B1; C1; D1和A1; B1; C2; D2,你會想要C1和D1還是C2和D2,還是它很重要? – juharr