c# - 指定的转换在 linq 查询中无效

标签 c# asp.net linq casting datatable

是否有某种方式而不是尝试错误来指定哪个字段出现问题以及正确的字段类型是什么?

我得到以下异常:

Specified cast is not valid.

 var vacStatiscs = from x in dtGivenBal.AsEnumerable()
                                  join y in dtTakenBal.AsEnumerable()
                                  on x["emp_num"].ToString() equals y["emp_num"].ToString()
                                  into joined
                                  from j in joined.DefaultIfEmpty()
                                  select new
                                  {
                                      emp_num = x.Field<int>("emp_num"),
                                      name = x.Field<string>("name"),
                                      startBal = x.Field<int>("startBal"),
                                      prevMon = x.Field<int>("PrevMon"),
                                      added = x.Field<int>("Added"),
                                      taken = (j == null) ? 0 : j.Field<Int32>("sum")

                                  };

现在,如果我删除 startBal ,prevMon ,added,我不会出现异常。

注意:前面的字段是 COUNTSUM SQL 查询的结果

最佳答案

没有直接的方法来检测是哪个字段导致了问题。

要回答您的第二个问题,如何找出正确的字段类型:

Type fieldType = dtGivenBal.Columns["startBal"].DataType;

所以你可以使用 DataTable.Columns集合以确定每列的类型(例如通过调试器)。这样你也会发现错误的类型。

关于c# - 指定的转换在 linq 查询中无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32627704/

相关文章:

c# - WPF 应用程序没有输出到控制台?

c# - Asp.Net SQL 更新语句

c# - 在 C# 中读取 Excel 2007 文件 (.xlsx)

c# - 如何将 Dictionary 对象传递给泛型类型参数?

c# - 如何将匿名类型对象发送到方法

c# - 在 .NET 中使用 TPL

asp.net - 是否有任何 .NET 标准可以处理本地化并允许用户自定义文本?

c# - 在 Razor 中调用部分 View

linq - 是什么导致Html.ValidateFor()方法产生编译错误?

c# - Linq to Entities Expression/Func 之间的性能差异