如何在没有故事的情况下返回已排序的数组(不变性介绍)?

时间:2014-11-05 16:50:24

标签: c# linq sorting immutability

我有一个字典,我投影到一个列表,我排序。之后,我返回结果。但是,我想知道是否可以(如果是这样的话)返回已排序的数组而不先存储它。

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

编译器唠叨我无法将 void 类型设置为 List 类型,这是可以理解的。但是有可能使 Sort 吐出一个要返回的新列表(没有多态)。有点像这样。

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

1 个答案:

答案 0 :(得分:1)

你需要:

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

这将返回有序的值列表,而不修改原始Array