2016-09-12 28 views
0

私はEpicor ERPがBPMのプリ/ポスト処理で呼び出す外部.dllを開発しています。 .dllはC#で書かれ、Epicorは.dllにデータセットを渡します。FirstOrDefaultの追加/更新/削除されたデータの取得方法データテーブルの行?

変更された行または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(); 

をしかし、私はそれが追加された行ではありません心配、更新または削除されます。

+0

に短縮することができることを意味した方法.Added().Updated().Deleted().Unchanged()を提供しますか? – STLDeveloper

+0

p.s. '(ttQuoteDtlのttQuoteDtl_RowからttQuoteDtl_Rowを選択する)'は何もしませんが、 'ttQuoteDtl'で置き換えることができます。 –

答えて

1

あなたは2つの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の行はIceRowインターフェイスを実装します。これは、最初のステートメントの実行後に `ttQuoteDtl`ヌルです上記

var quoteDtlRow = 
    ds.QuoteDtl 
    .Where(
     r => !r.Unchanged() 
    ).FirstOrDefault(); 
関連する問題