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