我有List<IGrouping<string,string>>.
是否有可能在此列表中添加新项目?或者实际上,是否可以创建一些IGrouping对象?
如果我想初始化分组列表,我可以内联吗?
更新上下文
我已经知道我无法初始化接口,但是dotnet中是否已经内置了一个实现?
我不想创建自己的实现,因为我试图将现有的私有方法重构为它自己的公共类,因此我需要传递参数进行单元测试.
void MyMethod(IList<IGrouping<int, MyObject>> objGroupings)
Run Code Online (Sandbox Code Playgroud)
目前我已经使用初始化列表,然后按键分组:
var fooList = new List<MyObject>
{
new MyObject{ foo = 5 },
new MyObject{ foo = 5 },
new MyObject{ foo = 5 },
new MyObject{ foo = 2 },
new MyObject{ foo = 2 }
};
var fooGrouping = fooList.GroupBy(o => o.foo).ToList();
Run Code Online (Sandbox Code Playgroud) 我有一个清单
我的要求
如果条件满足其他不分组,我需要一个 LINQ lambda 查询来分组到列表。
即在我希望它被分组的条件下,
否则它不应该被分组
我在网上搜索过 - 我获得了有关按条件分组的详细信息,但我无法获得并了解如何在不分组的情况下包含剩余项目。
在网上找到的一些信息用于有条件地分组 - 但那些不符合条件的项目不包括在结果列表中。
例如
列表 = [{1,"a"},{40,""),{9,"a"},{52,"b"),{2,"b"},{99,""),{第88话
预期的结果列表将按 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,""} ]
Run Code Online (Sandbox Code Playgroud)
我试过的
var resultantList = sigList
.GroupBy(s => s.SignalGroup)
.Select(grp => grp.ToList())
//.Where(g => !g.Any(grp => grp.SignalGroup == ""))
.ToList();
Run Code Online (Sandbox Code Playgroud)
以上如预期
取消注释 Where 子句仅将 a 和 b==> 包含在空值 …