我正在处理一个非常大的SQL视图(50多列)。为了确保我获得正确的数据,我必须选择列的子集(4或5列)并按该子集进行分组。 (否则我将返回额外的数据)。这意味着我写了很多查询,所有这些查询非常相似,只有很小的差异。
我目前正在运行我的查询
var result = this.UtilContext.MassiveView
.GroupBy(g => new
{
g.id,
g.Value1,
g.Value2,
g.Value3
}).Where(c => c.Key.id == SomeID)
.AsNoTracking()
.Select(x => new
{
id = x.Key.id,
Value1 = x.Key.Value1,
Value2 = x.Key.Value2,
Value3 = x.Key.Value3
}).ToList()
是否可以动态创建GroupBy和Select语句(应用程序已经知道它需要哪些列)。我正在寻找一个基于代码的approch,创建一个select语句不是我在这里寻找的。
答案 0 :(得分:2)
您可以构建表达式树并动态创建linq语句。
在this post中,查看Jorrit Steetskamp的答案,为group by及其用法创建表达式树。
您也可以像this post建议的那样为select语句执行某些操作。
另一个选项可能是ESQL(实体Sql),它使用更像sql语法来执行对DB的查询。 Check this for example