【发布时间】:2012-11-11 08:24:50
【问题描述】:
我正在尝试使用 linq 连接两个数据表
var invoices420 = dt420_.AsEnumerable();
var invoices430 = dt430_.AsEnumerable();
var query = from inv430 in invoices430
join inv420 in invoices420 on inv430.LinkDoc equals inv420.LinkDoc
orderby inv430.SID
select new
{
LinkDoc = inv430.LinkDoc,
TotalIn = Math.Round(inv430.Credit, 2),
TotalOut = ((inv420 == null) ? 0 : Math.Round(inv420.Debit, 2))
};
加入似乎不是问题,但我收到错误“System.Data.DataRow”不包含“LinkDoc”的定义,并且没有扩展方法“LinkDoc”接受“System.Data”类型的第一个参数。可以找到 Data.DataRow'(您是否缺少 using 指令或程序集引用?)。
在不使用 inv430.Field("linkdoc") 的情况下引用 DataTable 中的列(例如 inv430.LinkDoc),我必须做些什么?
如果我想对结果集进行分组,我正在考虑
var q2 = query
.GroupBy(item => item.LinkDoc);
return q2.ToArray();
问题是在第二季度我没有得到所有的列(linkdoc、totalin、totalout)。
原始数据是
dt420_
Linkdoc Credit
Invoice1 500
Invoice2 100
Invoice3 200
dt430_
LinkDoc Debit
Invoice1 100
Invoice1 100
Invoice2 200
Result would be
LinkDoc TotalIn(Credit) TotalOut(Debit)
Invoice1 500 200
Invoice2 100 200
Invoice3 200 0
【问题讨论】:
标签: linq datatable asenumerable