2017-05-12 61 views
0

我的邏輯是這樣的:實體拉姆達,通過一些列組,並選擇更多的列

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

+0

對於A和B的獨特組合,你想要C和D的值嗎?像A1; B1; C1; D1和A1; B1; C2; D2,你會想要C1和D1還是C2和D2,還是它很重要? – juharr

回答

2

要獲得A的獨特組合和B您剛剛從Key財產得到他們,那麼你必須決定你想要的CD值。在這裏,我只是將它們從第一行中拉出來,每個組合都是A - B,但您可以執行其他聚合,如Min,MaxAverage

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>並具有TKeyKey財產。因此,您在Select中使用的lambda正在處理根據您分組的內容而具有Key的東西,並且它是按照該唯一鍵值進行分組的所有項目/行的集合。

+0

哈...當然,我必須使用agregate。我期待什麼...甚至不必嘗試,這將工作。分組了iEnumerable,明白了,它看起來就像一個詞典。 –