在此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代替。谢谢!我会将其标记为答案。 –