簡體   English   中英

使用LinqToExcel進行子選擇

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM