使用LINQ使用c#交换List <>元素

8 c# linq

我有这个清单

var list = new List {3,1,0,5};

我想用2交换元素0

输出0,1,3,5

Ree*_*sey 16

如果你只想要它排序,我会使用List.Sort().

如果要交换,则没有内置方法来执行此操作.但是,编写扩展方法很容易:

static void Swap<T>(this List<T> list, int index1, int index2)
{
     T temp = list[index1];
     list[index1] = list[index2];
     list[index2] = temp;
}
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

list.Swap(0,2);
Run Code Online (Sandbox Code Playgroud)

  • 您无法通过索引访问IEnumerable,因此您的方法将无法正常工作.您可以返回一个IEnumerable,但除非您构造了一个副本,否则它可能会出现意外行为,因为您将返回修改后的集合.构建副本会增加开销. (2认同)