복붙노트

[SQL] LINQ case 문

SQL

LINQ case 문

내가 LINQ에서 CASE 문 (C #을) 몇 가지 도움이 필요합니다

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로 전환에서 시작 내 :

이 쿼리는 상거래 사이트에 생산에서 재고 상태를 업데이트합니다.

해결법

  1. ==============================

    1.당신의 후 LINQ (당신의 코멘트를 읽기)에서의 단지 CASE 문은 다음이의 예입니다 만약 ...

    당신의 후 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"
            )
        }
    );
    
  2. ==============================

    2.여기 내 진행은 아직 전혀 작동하지 않는, 지금까지, 그러나 시작이다 :

    여기 내 진행은 아직 전혀 작동하지 않는, 지금까지, 그러나 시작이다 :

    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.

  3. ==============================

    3.먼저, 업데이트 할 것을 항목을 선택합니다. 그런 다음, 일반 C #으로 그들을 업데이트 할 수 있습니다. 변경 내용을 제출합니다.

    먼저, 업데이트 할 것을 항목을 선택합니다. 그런 다음, 일반 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();
    
  4. ==============================

    4.응용 프로그램 서버에 업데이트 루프를하는 것보다 더 좋을 것입니다, 저장 프로 시저에 하나의 UPDATE 문을 사용합니다.

    응용 프로그램 서버에 업데이트 루프를하는 것보다 더 좋을 것입니다, 저장 프로 시저에 하나의 UPDATE 문을 사용합니다.

  5. ==============================

    5.http://bartdesmet.net/blogs/bart/archive/2008/03/30/a-functional-c-type-switch.aspx는 기능 스위치 케이스 구현에 대해 이야기합니다.

    http://bartdesmet.net/blogs/bart/archive/2008/03/30/a-functional-c-type-switch.aspx는 기능 스위치 케이스 구현에 대해 이야기합니다.

  6. ==============================

    6.당신은 대량 업데이트를 수행하고 있지만 링크는 순전히 쿼리 및 객체 선택 도구입니다. 이 경우 확실히 데이터베이스 서버입니다 작업에 적합한 도구를 ... 사용합니다.

    당신은 대량 업데이트를 수행하고 있지만 링크는 순전히 쿼리 및 객체 선택 도구입니다. 이 경우 확실히 데이터베이스 서버입니다 작업에 적합한 도구를 ... 사용합니다.

  7. ==============================

    7.Linq에에는 "업데이트"문이 없다 (사용 중 맛, 그것은 LinqToSQL 또는 LinqToEntities 수).

    Linq에에는 "업데이트"문이 없다 (사용 중 맛, 그것은 LinqToSQL 또는 LinqToEntities 수).

    LINQ 엄격 쿼리 언어를 제공한다.

    당신이 LinqToSQL를 사용하여 데이터를 업데이트 할 경우, 당신은 첫 번째 쿼리에 업데이트에 필요한 항목에 대한 컨텍스트를 필요, 그들에 다음 루프는 데이터베이스에 변경 사항을 저장하기 위해 호출 SubmitChanges에 마지막으로 자신의 속성을 변경합니다.

  8. from https://stackoverflow.com/questions/936028/linq-case-statement by cc-by-sa and MIT license