为了账号安全,请及时绑定邮箱和手机立即绑定

linq案例陈述

linq案例陈述

C#
慕尼黑的夜晚无繁华 2019-11-19 10:17:52
我需要有关linq(C#)中CASE语句的一些帮助:osc_products.products_quantity =      CASE          WHEN itempromoflag <> 'N' THEN 100000         WHEN itemcat1 IN ('1','2','31') AND itemsalestatus = 'S' THEN 100000         WHEN itemsalestatus = 'O' THEN 0         ELSE cds_oeinvitem.itemqtyonhand - cds_oeinvitem.itemqtycommitted       END  我开始转换为linq,(我仍在学习):cdsDBDataContext db = new cdsDBDataContext();  var query = from items in db.cdsItems              where items.ItemHandHeldFlag.Equals("Y") &&               items.ItemQtyOnHand -  items.ItemQtyCommitted > 0  select items;此查询将库存状态从生产更新为贸易站点。
查看完整描述

3 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

如果它只是LINQ中的CASE语句,请阅读(您的评论),然后再举一个例子。


Int32[] numbers = new Int32[] { 1, 2, 1, 3, 1, 5, 3, 1 };


var numberText =

(

    from n in numbers

    where n > 0

    select new

    {

        Number = n,

        Text = 

        (

            n == 1 ? "One" :

            n == 2 ? "Two" :

            n == 3 ? "Three" : "Unknown"

        )

    }

);


查看完整回答
反对 回复 2019-11-19
?
慕慕森

TA贡献1856条经验 获得超17个赞

到目前为止,这是我的进度,目前还没有任何工作,但这是一个开始:


var query2 = from items in db.cdsItems

             where items.ItemTrackingCode.Equals("A") && (items.ItemQtyOnHand - items.ItemQtyCommitted) > 0

             select new  {

                           items,

                           qty =

                                 (

                                    items.ItemPromoFlag.Equals("1") ? "100000" :

                                    items.ItemCat1.Equals("1") ? "100000" :

                                    items.ItemSaleStatus.Equals("O") ? "0" :

                                    (items.ItemQtyOnHand - items.ItemQtyCommitted).ToString

                                 )

                         };

这种语法对我来说似乎很尴尬...我可能只是通过sql。


查看完整回答
反对 回复 2019-11-19
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

首先,选择要更新的项目。然后,使用常规C#更新它们。提交更改。


    var q = from osc in MyDataContext.osc_products

            join cds in cds_oeinvitem on osc.products_model equals cds.itemno into p

            where osc.Itemwebflag == 'Y'

            select p;


    foreach (var item in q)

    {

        if (item.itempromoflag != "N")

            item.products_quantity = 100000;

        else if ((new[] { 1, 2, 31 }.Contains(item.itemcat1)) && (item.itemsalestatus == 'S'))

            item.products_quantity = 100000;

        else if (item.itemsalestatus == 0)

            item.products_quantity = 0;

        else

            item.products_quantity = item.itemqtyonhand - item.itemqtycommitted;

    }


    MyDataContext.SubmitChanges();


查看完整回答
反对 回复 2019-11-19
  • 3 回答
  • 0 关注
  • 350 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信