我使用LINQ动态查询库https://weblogs.asp.net/scottgu/dynamic-linq-part-1-using-the-linq-dynamic-query-library它非常适合查询字段(可选(
IQueryable GetSource( DataTable t, String str)
{
//Working str = "new (T["ss"] as ss,T["xx"] as xx )"
//Not Working str = "new (T["ss"] as ss, T["xx"] as xx , T["ss"] +T["xx"] as yy)"
return (from T in t.AsEnumerable()
select new{T}).AsQueryable().Select(str);
}
但当我尝试运算,如(加法-乘法-除法-合并(出错我如何进行会计操作和合并字段
您正在使用DataRow
item
属性来获取字段的值。此方法返回一个无法添加的object
。您需要转换为正确的类型。
"new (T["ss"] as ss, T["xx"] as xx, int(T["ss"])+int(T["xx"]) as yy)"
谢谢事实上,它必须被转换,因为它是目标
IQueryable GetSource( DataTable t, String str)
{
//Working str = "new (T["ss"] as ss,T["xx"] as xx )"
//Working str = "new (T["ss"] as ss,T["xx"] as xx , string.Concat(T["ss"], T["xx"]) as yy )"
//Working str = ""new (T["ss"] as ss,T["xx"] as xx , decimal(T["ss"]) + decimal(T["xx"]) as yy )""
return (from T in t.AsEnumerable()
select new{T}).AsQueryable().Select(str);
}