0

下面是我的代码:

sFieldList.Select(y => "Sum(Convert.ToDouble(iif(it[\""+y+"\"] == @0,0,it[\""+y+"\"]))) as "+y)and then 

var newSort = dataTable
                .AsEnumerable()
                .AsQueryable()
                .GroupBy("new("+gField+")", "it")
                .Select("new("+sField+",it.Key as Key, it as Data)",DBNull.Value);

我希望将上述 Sum() 方法的结果四舍五入为 2 位十进制数字。如何在此查询本身中添加它?

4

2 回答 2

0

不知何故,动态 linq 并不总是能理解数字,所以试试这个:

sFieldList.Select(y => "Sum(Math.Round(Convert.ToDouble(iif(it[\""+y+"\"] == @0,0,it[\""+y+"\"])),@1)) as "+y)

接着

var newSort = dataTable
            .AsEnumerable()
            .AsQueryable()
            .GroupBy("new("+gField+")", "it")
            .Select("new("+sField+",it.Key as Key, it as Data)",DBNull.Value,2);
于 2013-10-30T05:48:47.750 回答
0

希望我能正确理解您的问题,但据我所知,您只需要一个额外的 Select()

    var roundedSums = list.Select(x => "some dynamic query on x")
                          .Select(x => Math.Round(x, 2);

通过链接多个 Selects(),您只是在一个记录到另一个记录的基础上投影您的原始集合。

如果这不是您要查找的内容,我们可能需要进一步说明。

于 2013-10-29T18:59:44.587 回答