旧日幻像 2016-02-01 07:57 采纳率: 0%
浏览 2287

Linq 多列求和 列是动态的 能不能不写sql就实现需求?

select sum(column1),sum(column2)... from tbl 这样一个sql 转化成 linq 要怎么写?
列是动态的 代码执行的时候才知道要对那些列求和。
不知道用linq怎么写 现在只能通过SqlQuery查询结果 使用System.Reflection.Emit 动态创建一个对应的类型装载结果 求教大神 有没有可能通过linq实现?

string sqlSelect = "";
                TypeBuilder builder = DatabaseExtensions.CreateTypeBuilder("MyDynamicAssembly", "MyModule", "MyType");
                facs.ForEach(k =>
                {
                    sqlSelect += "round(nvl(sum(" + k.DataColumn + "),0),2) as " + k.DataColumn + ",";
                    DatabaseExtensions.CreateAutoImplementedProperty(builder, k.DataColumn, typeof(decimal?));
                });
                Type resultType = builder.CreateType();
                var result = Dal.Database.SqlQuery(resultType, "select " + sqlSelect.TrimEnd(',') + "  from tbl " + sqlWhere, parms.ToArray());
  • 写回答

2条回答

  • threenewbee 2016-02-01 23:37
    关注

    如果你的数据量比较小,可以ToList全部取出来,然后再反射。

    如果数据量大,那么需要用表达式树来动态构造查询。但是直接用sql更简单。

    评论

报告相同问题?

悬赏问题

  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误