簡體   English   中英

如何在數據表中獲取FirstOrDefault添加/更新/刪除的數據行?

[英]How to get the FirstOrDefault added/updated/deleted data Row in a data Table?

我正在開發一個Epicor ERP在BPM的前/后處理中調用的外部.dll。 .dll用C#編寫,Epicor將.dll傳遞給數據集。

我看過一些代碼示例,它們要么獲得更改的行,要么獲得FirstOrDefault,但不能同時獲得兩者。

此代碼始終為null,因此我的行為從未被調用。

var ttQuoteDtl = ds.QuoteDtl.Where(r => r.RowMod == IceRow.ROWSTATE_ADDED || r.RowMod == IceRow.ROWSTATE_UPDATED || r.RowMod == IceRow.ROWSTATE_DELETED);

var ttQuoteDtl_xRow = (from ttQuoteDtl_Row in ttQuoteDtl select ttQuoteDtl_Row).FirstOrDefault(); 

if (ttQuoteDtl_xRow != null)
{
  //Do Something 
}

如果這樣調用,我可以使ttQuoteDtl不為null並執行一些工作:

var ttQuoteDtl_xRow = ds.QuoteDtl.FirstOrDefault();

但是我擔心不會添加,更新或刪除任何行。

您可以將兩者結合起來,Linq語句是可組合的。

var quoteDtlRow = 
    ds.QuoteDtl
    .Where(r => 
        r.RowMod == IceRow.ROWSTATE_ADDED || 
        r.RowMod == IceRow.ROWSTATE_UPDATED || 
        r.RowMod == IceRow.ROWSTATE_DELETED
    ).FirstOrDefault();

如果始終為null,則可能需要查看更多代碼。

順便說一句,如果DS是傳遞到BPM方法中的數據集,則ds.QuoteDetail的一行ds.QuoteDetail實現IceRow接口。 這提供了.Added() .Updated() .Deleted().Unchanged()這意味着可以將上述內容簡化為

var quoteDtlRow = 
    ds.QuoteDtl
    .Where(
        r => !r.Unchanged()
    ).FirstOrDefault();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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