C# &引用;指定的强制转换无效";LINQ'中的错误;s orderby子句
我正在LINQ中的两个数据表之间进行正确的连接。我在orderby行“指定的强制转换无效”处遇到错误 “其他人“列在dbml中的类型为System.Int64,并允许DBNull。该列在数据中有一些空值,这是有效的。似乎在orderby语句中必须以某种方式处理这些空值,但我不确定如何处理。数据是通过web服务传入的。我检查了reference.cs文件,该列的相应属性是int LINQ语句应该是怎样的C# &引用;指定的强制转换无效";LINQ'中的错误;s orderby子句,c#,.net,linq,datatable,nullable,C#,.net,Linq,Datatable,Nullable,我正在LINQ中的两个数据表之间进行正确的连接。我在orderby行“指定的强制转换无效”处遇到错误 “其他人“列在dbml中的类型为System.Int64,并允许DBNull。该列在数据中有一些空值,这是有效的。似乎在orderby语句中必须以某种方式处理这些空值,但我不确定如何处理。数据是通过web服务传入的。我检查了reference.cs文件,该列的相应属性是int LINQ语句应该是怎样的 var query = (from table1 in DataTable1.AsEnume
var query = (from table1 in DataTable1.AsEnumerable()
join table2 in DataTable2.AsEnumerable()
on (int) table1["CustomerID"] equals (int) table2["CustomerID"] into outer
from table2 in outer.DefaultIfEmpty()
orderby (int?)table2["SomeOtherID"]
select new
{
......
});
同时检查:
试试下面的方法
var query =
(from table1 in DataTable1.AsEnumerable()
join table2 in DataTable2.AsEnumerable()
on (int) table1["CustomerID"] equals (int) table2["CustomerID"]
into outer from table2 in outer.DefaultIfEmpty()
//order by clause changed here
orderby
(Convert.IsDBNull(table2["SomeOtherID"]) ? 0 : (int?)
Convert.ToInt32(table2["SomeOtherID"]))
select new
{
......
});
解决方案对您有效吗???重新标记-我假设这是LINQ到SQL,而不是LINQ到实体。无论哪种方式,它都不在内存中LINQ。回滚,这不是LINQ到SQL或LINQ到实体。这是LINQ到DataTables。@Danny我使用了通用LINQ标记,它包含任何类型的LINQ。我不明白你想干什么!数据表在内存中。@Tony_Henrich我错了,从原始标记(和)看不清楚。