我需要一种方法来创建一个空的 IOrderedEnumerable 和
IEnumerable
//上面的 IGrouping DynamicNode 被 stackoverflow 剥离了
原因:我创建了 3 个空列表类型(IOrdered、IGrouping、IEnumerable),然后根据一些其他信息(用户指定的选项,例如按创建日期排序或按月分组),然后调用一个函数,分配一个所述列表类型。
(简短片段)
//DOESNT WORK THIS IS THE PART I NEED
IEnumerable<DynamicNode> baseList = Enumerable.Empty<DynamicNode>();
IOrderedEnumerable<DynamicNode> orderedList = (IOrderedEnumerable<DynamicNode>)Enumerable.Empty<DynamicNode>();
IEnumerable<IGrouping<string, DynamicNode>> groupedList = (IEnumerable<IGrouping<string, DynamicNode>>)Enumerable.Empty<DynamicNode>();
//ABOVE DOESNT WORK THIS IS THE PART I NEED
if (order)
{
if (group)
{
groupedList = returnGroupedOrderedList(nodeList, ascending, useFeatured, groupBy, orderBy);
}
else
{
orderedList = returnOrderedList(nodeList, ascending, useFeatured, orderBy);
}
}
有人知道怎么做吗?
第一个应该按原样工作:
IEnumerable<DynamicNode> baseList = Enumerable.Empty<DynamicNode>();
第二个应该使用一些小技巧:
IOrderedEnumerable<DynamicNode> orderedList =
Enumerable.Empty<DynamicNode>().OrderBy(x => 1);
第三个应该稍作改变即可工作:
IEnumerable<IGrouping<string, DynamicNode>> groupedList =
Enumerable.Empty<IGrouping<string, DynamicNode>>();
您始终可以使用
Enumerable.Empty<T>
生成空的 IEnumerable。
无论您想要特定类型的 IEnumerable,还是 IEnumerable 的 IEnumerable,通用输入都将始终有效。
现在,如果您想要一个有序的枚举,那么您可以在此基础上进行构建,并对生成的空枚举进行排序,如下所示
IOrderedEnumerable<DynamicNode> orderedList = Enumerable
.Empty<DynamicNode>()
.OrderBy(x => 1);
更好的是,你可以使用丢弃,因为
x
并不重要
IOrderedEnumerable<DynamicNode> orderedList = Enumerable
.Empty<DynamicNode>()
.OrderBy(_ => 1);