简体   繁体   English

如何在数据表中获取FirstOrDefault添加/更新/删除的数据行?

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

I'm developing an external .dll that my Epicor ERP calls in a BPM's pre/post processing. 我正在开发一个Epicor ERP在BPM的前/后处理中调用的外部.dll。 The .dll is written in C# and Epicor passes the .dll a dataset. .dll用C#编写,Epicor将.dll传递给数据集。

I've seen code examples that either get changed rows or FirstOrDefault but not both. 我看过一些代码示例,它们要么获得更改的行,要么获得FirstOrDefault,但不能同时获得两者。

This code is always null so my do something never gets called. 此代码始终为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 
}

I can get ttQuoteDtl to not be null and perform some work if I call it like this: 如果这样调用,我可以使ttQuoteDtl不为null并执行一些工作:

var ttQuoteDtl_xRow = ds.QuoteDtl.FirstOrDefault();

But I'm concerned it won't be a row that has been added, updated or deleted. 但是我担心不会添加,更新或删除任何行。

You can just combine the two, Linq statements are composable. 您可以将两者结合起来,Linq语句是可组合的。

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

If this is always null then we may need to see some more code. 如果始终为null,则可能需要查看更多代码。

Incidentally, if DS is the dataset passed into the BPM method then a row from ds.QuoteDetail implements the IceRow interface. 顺便说一句,如果DS是传递到BPM方法中的数据集,则ds.QuoteDetail的一行ds.QuoteDetail实现IceRow接口。 This provides the methods .Added() , .Updated() , .Deleted() and .Unchanged() meaning the above can be shortened to 这提供了.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