使用LinQ C#时选择查询案例

时间:2015-07-16 14:58:34

标签: c# linq

Select等于r.Field<bool>("isDefault") != false时,我想在DetailNo查询中使用ZZZZZ添加条件,我可以使用{r.Field<string>("Code")获取所有代码Distinct {1}}。

例如:

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();

1 个答案:

答案 0 :(得分:1)

变化:

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

对此:

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

所以,你过滤的代码不是空的(代码等于ZZZZ或IsDefault是真的。