我有一个sql查询
select SUM(convert(numeric ,Sub_Key_Value)) from [dbo].[Business_Report] where Parent_Tab='Staffing' and Sub_Key_Name='BM'
它运行良好,我正在尝试使用 c# 中的 linq 来实现它, 下面是代码
int sum = dt.AsEnumerable().Where(x => x.Field<string>("Parent_Tab") == "Staffing")
.Where((y => y.Field<string>("Sub_Key_Name") == "BM")).Sum(z => z.Field<int>("Sub_Key_Value"));
问题是,当我运行此代码时,它显示“指定的转换无效。”可能在部分
Sum(z => z.Field<int>("Sub_Key_Value")
它是来自数据库的字符串,无法将其转换为 int 来获取总和
任何关于如何在 linq 中获取总和的想法都是值得赞赏的谢谢
最佳答案
因为 Field
不会转换为 int
。
int sum = dt.Rows.Cast<DatRow>().Sum(r => "Staffing".Equals(r["Parent_Tab"])
&& "BM".Equals(r["Sub_Key_Name"]) ? Convert.ToInt32(r["Sub_Key_Value"]) : 0);
关于c# - linq中varchar字段的和,如何进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43975867/