【发布时间】:2015-12-18 23:36:32
【问题描述】:
我正在加入数据表以创建一个新的数据表。这是代码:
var row = from r0w1 in dt_vi.AsEnumerable()
join r0w2 in dt_w.AsEnumerable()
on r0w1.Field<int>("wcID") equals r0w2.Field<int>("iD")
join r0w3 in dt_r.AsEnumerable()
on r0w1.Field<int?>("cID") equals r0w3.Field<int?>("r_id")
join r0w4 in dt_d.AsEnumerable()
on r0w1.Field<int?>("dftID") equals r0w4.Field<int?>("dft_id") into ps
from r0w4 in ps.DefaultIfEmpty()
select r0w1.ItemArray.Concat(r0w2.ItemArray.Concat(r0w3.ItemArray.Concat(r0w4 != null ? r0w4.ItemArray : new object[] { }))).ToArray();
这段代码可以工作,但是当我尝试下面的代码时,它不工作并返回 null。
var row = from r0w1 in dt_vi.AsEnumerable()
join r0w2 in dt_w.AsEnumerable()
on r0w1.Field<int>("wcID") equals r0w2.Field<int>("iD")
join r0w3 in dt_r.AsEnumerable()
on r0w1.Field<int?>("cID") equals r0w3.Field<int?>("r_id")
join r0w4 in dt_d.AsEnumerable()
on r0w1.Field<int?>("dftID") equals r0w4.Field<int?>("dft_id") into ps
from r0w4 in ps.DefaultIfEmpty()
select new
{
cID = r0w1.Field<int?>("cID"),
status = r0w1.Field<int?>("status"),
defectID = r0w1.Field<int?>("dftID"),
name = r0w2.Field<string>("name"),
description = r0w3.Field<string>("description"),
dftAID = r0w4.Field<string>("dftAID"),
dftName = r0w4.Field<string>("dftName")
};
row.ToList().ForEach(q=>dt.Rows.Add(q.ID,q.status,q.dfID,q.name,q.description,q.dftAID,q.dftName));
我得到的错误是
Value cannot be null.
Parameter name: row
为什么上面的代码返回 null ?
【问题讨论】:
-
究竟返回null的是什么? afaik
row不能为空,它总是某种迭代器。这个枚举是空的吗? -
显示错误
Value cannot be null.Parameter name: row -
能否包含完整的异常消息,包括堆栈跟踪?