繁体   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