簡體   English   中英

使用LinQ C#條件時選擇查詢案例

[英]Select query case when with condition with LinQ C#

我想在帶有r.Field<bool>("isDefault") != false Select查詢中添加一個條件,當DetailNo等於ZZZZZ ,我可以將所有代碼作為r.Field<string>("Code")Distinct

例如:

Code | DetailNo | isDefault                 Code | DetailNo | isDefault
IP6  |   ZZZZZ   | true                      IP6  |   AAAAA   | false
IP7  |   ZZZZZ   | true                      IP7  |   AAAAA   | false
IP7  |   ZZZZZ   | true                           |   AAAAA   | false
IP8  |   ZZZZZ   | false                     IP8  |   AAAAA   | true
IP7  |   ZZZZZ   | true                      IP7  |   AAAAA   | false
IP6  |   ZZZZZ   | true                      IP6  |   AAAAA   | false
IP8  |   ZZZZZ   | false                     IP8  |   AAAAA   | true

結果必須是:

Code | DetailNo | isDefault                 Code | DetailNo | isDefault
IP6  |   ZZZZZ   | true                      IP6  |   AAAAA   | false
IP7  |   ZZZZZ   | true                      IP7  |   AAAAA   | false
                                             IP8  |   AAAAA   | true

int countItem = dt
                 .AsEnumerable()
                 .Where(r => r.Field<string>("Code") != "")
                 .Select(r => r.Field<string>("DetailNo") == "ZZZZZ" ? r.Field<string>("Code") : r.Field<string>("Code") + r.Field<int>("TotalID"))
                 .Distinct()
                 .Count();

更改:

Where(r => r.Field<string>("Code") != "")

對此:

Where(r => r.Field<string>("Code") != "" && (r.Field<string>("Code") != "ZZZZ" || r.Field<bool>("isDefault"))))

因此,您正在按不為空的代碼進行過濾,並且(代碼等於ZZZZ或IsDefault為true。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM