我想弄清楚如何使用Linq执行子选择。我有一个带有“借记”和“贷记”栏的Excel表。我需要筛选出任何有借方列值(> 0.00)的行,并与进一步向下的贷方列值相匹配。两行都必须具有相同的付款人ID。以下是我想出迄今:使用LinqToExcel子选择
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来充分发挥它的潜力。有任何想法吗?
我也建议(如上面所述),但也许你应该为列表定义一个额外的变量,然后进行连接,因为这可能会节省内存和处理时间。 – jCoder 2012-02-05 10:55:40