现在的位置: 首页 > 综合 > 正文

在BO中写类似 Exists 的方法

2013年01月23日 ⁄ 综合 ⁄ 共 1272字 ⁄ 字号 评论关闭

protected
override
bool DoApprove(MyStatusChangeEventArgs<SdEntities,
SdPriceChk> e)

        {

//更新价格清单

            UpdatePubItemPrice(e.ctx, e.MasterEntity); 

            return
base
.DoApprove(e);

        }

 

        private
void
UpdatePubItemPrice(ObjectContext ctx,
SdPriceChk sdPriceChk)

        {

//取得Pub模块的Context

            var pubCtx = CreateContext<PubEntities>();  

//找出本单涉及的ItemID集合

var billItem = sdPriceChk.SdPriceChkItem.Select(o => o.ItemID);

           

//1. Linq的写法

var pubItemPriceSet =
from
it in pubCtx.PubItemPrices
where
billItem.Contains(it.ItemID)  select it;

               

//2.
拉母达表达式的写法:

           var pubItemPriceSet = pubCtx.PubItemPrices.Where(o => billItem.Contains(o.ItemID));

 

            //循环明细记录

            foreach (var item
in sdPriceChk.SdPriceChkItem)

            {

                var pubItemPrice = pubItemPriceSet.Where(o => o.ItemID == item.ItemID).FirstOrDefault();               

                if (pubItemPrice ==
null)

                {

                    pubItemPrice = pubCtx.PubItemPrices.CreateObject();

                    pubItemPrice.ItemID = item.ItemID ??
Guid
.Empty;

                    pubCtx.PubItemPrices.AddObject(pubItemPrice);

                }

                else

                {

                    pubItemPrice.MarkAsModified();

                }

                pubItemPrice.Price = item.Price;

            }

        }

【上篇】
【下篇】

抱歉!评论已关闭.