c#如何返回一个已排序的数组没有故事它 (不可变性介绍)?

标签: Linq C#
发布时间: 2017/2/28 23:01:40
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有一本字典,投射在列表中,对进行排序。在那之后,我返回的结果。然而,我想知道是否它是可能 (如果有的话-如何) 返回而不首先将其存储的已排序的数组。

List<SomeType> thingies = dictionary.Select(element => element.Value).ToList();
thingies.Sort((the, thing) => the.Id.CompareTo(thing.Id));
return thingies;

编译器唠叨,我不能把void类型列表类型,是可以理解的。但它可能使排序吐出一个新的列表 (没有多态性) 返回。类似的这行。

  return dictionary.Select(element => element.Value)
    .ToList()
    .Sort((the, thing) => { ... });

解决方法 1:

你需要:

return dictionary.Select(element 
  => element.Value.OrderBy(r=> r.Id).ToArray())
    .ToList();

这将返回排序的列表的值,而无需修改原始 Array

赞助商