var gFieldList = new List<string>() { "Supplier", "Country" };
var sFieldList = new List<string>() { "Sales"};
var gField = string.Join(", ", gFieldList.Select(x => "it[\"" + x + "\"] as " + x));
var sField = string.Join(", ", sFieldList.Select(y => "Sum(Convert.ToDouble(it[\""+y+"\"])) as "+y));
var newSort = dataTable
.AsEnumerable()
.AsQueryable()
.GroupBy("new("+gField+")", "it")
.Select("new("+sField+",it.Key as Key, it as Data)");
var groupedData = (from dynamic dat in newSort select dat).ToList();
抛出异常
无法将对象从DBNull强制转换为其他类型。
在最后一行,
var groupedData = (from dynamic dat in newSort select dat).ToList();
如何解决这个问题?
答案 0 :(得分:0)
EDIT2:尝试更改您的转换
sFieldList.Select(y => "Sum(Convert.ToDouble(iif(it[\""+y+"\"] == @0,0,it[\""+y+"\"]))) as "+y)
然后
var newSort = dataTable
.AsEnumerable()
.AsQueryable()
.GroupBy("new("+gField+")", "it")
.Select("new("+sField+",it.Key as Key, it as Data)",DBNull.Value);
圆形求和结果的UPDATE2:试试这个:
sFieldList.Select(y => "Sum(Math.Round(Convert.ToDouble(iif(it[\""+y+"\"] == @0,0,it[\""+y+"\"])),2)) as "+y)
答案 1 :(得分:0)
试试这个:
var gFieldList = new List<string ?>() { "Supplier", "Country" };
var sFieldList = new List<string ?>() { "Sales"};