在此article中,它顯示了我們如何在lambda表達式中組合多個列。但是它返回一個IEnumerable<IEnumerable<TSource>>
,這不是我想要實現的結果。將GroupBy用於多列和返回列表<TSource>
我創建了一個包含幾個屬性的類。現在
internal class Class1
{
internal string prop1 { get; set; }
internal string prop2 { get; set; }
internal decimal? prop3 { get; set; }
}
,如果我創建了以下lambda表達式,它返回一個IQueryable<IEnumerable<Class1>> listClass1
var listClass1 = context.Table1
.Join(context.Table2,
t1 => t1.Id,
t2 => t2.Table1Id,
(t1, t2) => new { t1, t2 })
.Where(/*some expressions here*/)
.GroupBy(data => new
{
data.t1.Column1,
data.t2.Column2,
})
.Select(data => data.Select(x => new Class1
{
prop1 = x.t1.Column1,
prop2 = x.t2.Column2,
prop3 = x.t1.Column3
}));
但我想有一個List<Class1> listClass1
,因爲我打算使用foreach
遍歷每個元素在列表中。這可能嗎?
那麼如何將以下SQL語句轉換爲lambda表達式?這個查詢中的結果是我試圖實現的結果。 'SELECT t1.Column1,t2.Column2,t1.Column3 FROM dbo.Table1 T1 \t INNER JOIN dbo.Table2 T2 ON t1.Id = t2.Table1Id WHERE - 有些表達式 GROUP BY t1.Column1, t2.Column2,t1.Column3' –
'SELECT t1.Column1,t2.Column2,t1.Column3 ... GROUP BY t1.Column1,t2.Column2,t1.Column3'在功能上等同於'SELECT DISTINCT t1.Column1, t2.Column2,t1.Column3 ...'如果你真的想要使用聚合函數,你應該只使用分組**,例如**計算每個城市有多少人會選擇'Select CityName,Count(*)從城市名稱的公民組。您不調用聚合函數,因此不需要使用group by。 – Flater
您編輯的答案解決了我的問題!所以現在我清楚這兩者之間的區別。我應該用DISTINCT代替。謝謝!我會將其標記爲答案。 –