“选择”元素的顺序是否有所不同?

时间:2012-09-28 13:59:29

标签: c#

我正在处理声明如图所示的对象。

DataCollection<Entity> collection = GetDataCollection(...);

然后,我正在挑选两组数据如下。

IEnumerable<String> 
  array_1 = collection.Select(
    element => element.Attributes["attribute_1"] as String),
  array_2 = collection.Select(
    element => element.Attributes["attribute_2"] as String);

如果这两个数组保证具有相同的顺序,我非常好奇。即如果他们的单独订单必须与原始顺序相同。或者,至少,如果订单因任何原因而改变,第一个单独列表中的i元素是否仍然对应于另一个中的i元素?

2 个答案:

答案 0 :(得分:2)

他们不能保证是一样的。实际上,您可能会注意到订单通常与原始集合一致。

如果您担心一致性,只需添加OrderBy子句即可获得所需的订单(或至少一个在两个结果集合之间保持一致)。

答案 1 :(得分:0)

检查这个答案:

Preserving order with LINQ

至少从这个答案中可以看出,Select调用保证是相同的顺序。

我仍然会使用OrderBy(...)。看起来你无法确定LINQ调用,所以如果有人进来并添加了一个额外的LINQ调用,他们可能不知道你期望它们是相同的顺序。