Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在linq中使用OrderBy()?_C#_Linq - Fatal编程技术网

C# 在linq中使用OrderBy()?

C# 在linq中使用OrderBy()?,c#,linq,C#,Linq,我需要修改集合,以便对其中的项目序列进行排序 所以我在做一些类似的事情: IEnumerable<ItemType> ordered = myItems.OrderBy( (item) => item.Age); myItems.SomeActionHere // This should modify myItems in place. 这可能是一个新手问题,也可能是一个noob问题。很抱歉。您将无法使用Linq订购我放置的系列。除非您专门为您的序列类型执行OrderBy。

我需要修改集合,以便对其中的项目序列进行排序

所以我在做一些类似的事情:

IEnumerable<ItemType> ordered = myItems.OrderBy( (item) => item.Age);
myItems.SomeActionHere // This should modify myItems in place.

这可能是一个新手问题,也可能是一个noob问题。很抱歉。

您将无法使用Linq订购我放置的系列。除非您专门为您的序列类型执行
OrderBy

如果它是您可以使用的数组。这将在不复制引用/值的情况下执行就地排序

但是,同样,如果重复引用不是问题(通常不是问题),则可以在linq语句末尾标记
.ToArray()
.ToList()
,以“实现”有序枚举

例如:

如果您确实需要它作为另一个
ReadOnlyCollection
实例返回,您可以这样做:

myItems = new ReadOnlyCollection<ItemType>(myItems.OrderBy(i => i.Age).ToArray());

除了代码行较短之外,我看不出有什么好处——除非减少尖括号对您很重要:)

OrderBy
(与大多数其他Linq操作符一样)是懒惰的;它不会具体化结果,只是每次都重新读取源集合。因此,如果您更改
myItems
的内容,每次您将枚举
ordered
时,您将看到
myItems
中的最新更改使用或转换为。

myItems=myItems.OrderBy(i=>i.Age)
?myItems属于ReadOnlyCollection@Andras...thats甚至更好。我的代码中较短的代码行总是受欢迎的。我甚至不知道有一个数组。AsReadOnly()。我不知道你们怎么查这些东西…缩小尖括号?这是什么意思?
myItems = new ReadOnlyCollection<ItemType>(myItems.OrderBy(i => i.Age).ToArray());
myItems = Array.AsReadOnly(myItems.OrderBy(i => i.Age).ToArray());