[英]Sub-Select Using LinqToExcel
我试图弄清楚如何使用Linq执行子选择。 我有一个带有“借方”和“贷方”列的Excel工作表。 我需要过滤出借方列值(> 0.00)与贷方列值相匹配的行。 两行必须具有相同的付款人ID。 到目前为止,这是我想出的:
public void balanceSheet()
{
foreach (Payment payment in this.payments)
{
// c[6] is the payers ID.
var debits = from c in this.test.WorksheetNoHeader()
where c[6] != "0" && c[13] != "0.00"
select c;
// Find any rows in the sheet that have the same payer id AND the debit
// amount from the query above in it's credit column.
foreach(LinqToExcel.RowNoHeader debit in debits)
{
var credits = from c in this.test.WorksheetNoHeader()
where c[6] == debit[6] && c[15] == debit[13]
select c;
// Do something awesome if it finds something.
}
}
}
我希望有一种更优雅的解决方案,可以按照上述条件选择excel行,而不是每次都遍历它们。 我认为无论如何我都不会使用LINQ来发挥全部潜力。 有任何想法吗?
LinqToExcel不支持联接,但是您可以将其转换为内存列表,然后执行联接
var credits = from credit in this.test.WorksheetNoHeader().ToList()
join debit in this.test.WorksheetNoHeader().ToList() on credit[6] equals debit[6]
where debit[13] != "0.00"
where debit[13] == credit[15]
select credit
尝试加入:
var credits = from credit in this.test.WorksheetNoHeader()
join debit in this.test.WorksheetNoHeader() on credit[6] equals debit[6]
where debit[13] != "0.00"
where debit[13] == credit[15]
select credit
有关更多信息: http : //msdn.microsoft.com/zh-cn/library/bb311040.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.