【发布时间】:2017-09-02 19:54:23
【问题描述】:
我有一个清单
我的要求
如果条件满足,我需要一个 LINQ lambda 查询来分组到列表,否则不分组。
即在一个条件下我希望它被分组
否则不应分组
我已经搜索过网络 - 我得到了有关条件分组的详细信息,但我无法理解如何在没有分组的情况下包含剩余项目。
在网上找到的一些信息用于有条件地分组 - 但是那些不符合条件的项目不会包含在结果列表中。
举例
列表 = [{1,"a"},{40,""),{9,"a"},{52,"b"),{2,"b"},{99,""),{88, "b"}]
预期的结果列表将按 a,b 分组 但是“”不应该分组
ResultantList = Group[0] ==> [{1,"a"}
{9,"a"}],
Group[1] ==>[ {52,"b"),
{2,"b"},
{88,"b"}] ,
// all other items which is "" should be included without groups
Group[3] [ {40,""}]
Group[4][ {99,""} ]
我的尝试
var resultantList = sigList
.GroupBy(s => s.SignalGroup)
.Select(grp => grp.ToList())
//.Where(g => !g.Any(grp => grp.SignalGroup == ""))
.ToList();
如上所料
取消注释 Where 子句仅分组 a 和 b==> 不包含所有具有空值 ( "" ) 的项目
注释 Where 子句将 a、b 和 "" 字符串组合成一个包含 3 个组(a、b 和 "")的列表。
【问题讨论】: