조건부 데이터 업데이트에 대한 LINQ의 접근 방식
LINQ(Language Integrated Query)는 특히 데이터베이스 레코드를 업데이트할 때 SQL CASE 문의 기능을 미러링하여 조건부 논리를 관리하는 효율적인 방법을 제공합니다. 이를 달성하는 방법을 살펴보겠습니다.
일반적인 시나리오는 여러 조건에 따라 열을 업데이트하는 것입니다. 다음 SQL 예제를 고려해보세요.
<code class="language-sql">UPDATE osc_products SET 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</code>
이 SQL 문은 다양한 기준에 따라 products_quantity
업데이트됩니다. 동등한 LINQ 쿼리는 다음과 같습니다.
<code class="language-csharp">cdsDBDataContext db = new cdsDBDataContext(); var query = from items in db.cdsItems where items.ItemHandHeldFlag == "Y" let quantity = ( items.ItemPromoFlag != 'N' ? 100000 : (items.ItemCat1.In("1", "2", "31") && items.ItemSaleStatus == "S") ? 100000 : items.ItemSaleStatus == "O" ? 0 : items.ItemQtyOnHand - items.ItemQtyCommitted ) select new { ItemId = items.ItemId, UpdatedQuantity = quantity };</code>
이 LINQ 쿼리는 let
키워드를 사용하여 조건부 논리를 기반으로 계산된 quantity
을 정의합니다. 삼항 연산자(? :
)는 CASE 문의 기능을 구현하는 간결한 방법을 제공합니다. 최종 선택에는 ItemId
과 계산된 UpdatedQuantity
이 포함되어 효율적인 데이터베이스 업데이트가 가능합니다.
복잡한 조건부 업데이트를 처리하는 LINQ의 유연성을 보여주며 C# 코드 내에서 직접 SQL CASE 문에 대한 강력한 대안을 제공합니다.
위 내용은 데이터 업데이트를 위한 LINQ 쿼리에서 SQL CASE 문을 어떻게 복제할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!