3

我正在使用如图所示声明的对象。

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第一个单独列表中的第 th 个元素是否仍然对应于另一个列表中的i第 th 个元素?

4

2 回答 2

2

不能保证它们是相同的。实际上,您可能会注意到该顺序通常与原始集合一致。

如果您担心一致性,只需添加一个OrderBy子句以获得您需要的顺序(或至少一个在两个结果集合之间保持一致的顺序)。

于 2012-09-28T14:01:40.333 回答
0

检查这个答案:

使用 LINQ 保持顺序

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

我仍然会使用 OrderBy(...) 来遵循这一点。似乎您永远无法确定 LINQ 调用,所以如果有人进来并添加了额外的 LINQ 调用,他们可能不知道您期望它们是相同的顺序。

于 2012-09-28T14:04:37.157 回答