交换列表<>使用LINQ的c#元素

时间:2009-07-10 17:51:59

标签: c# linq

我有这个清单

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

我想将元素0与2

交换

输出     0,1,3,5

3 个答案:

答案 0 :(得分: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;
}

然后你可以这样做:

list.Swap(0,2);

答案 1 :(得分:2)

经典互换......


int temp = list[0];
list[0] = list[2];
list[2] = temp;

我不认为Linq有任何'交换'功能,如果那就是你正在寻找的。

答案 2 :(得分:1)

如果没有直接支持某些内容,请将其设为1号!

看看"extension methods"的概念。通过这种方式,您可以轻松地使列表支持Swap()的概念(这适用于您希望扩展类功能的任何时间)。

    namespace ExtensionMethods
    {
        //static class
        public static class MyExtensions 
        {
            //static method with the first parameter being the object you are extending 
            //the return type being the type you are extending
            public static List<int> Swap(this List<int> list, 
                int firstIndex, 
                int secondIndex) 

            {
                int temp = list[firstIndex];
                list[firstIndex] = list[secondIndex];
                list[secondIndex] = temp;

                return list;
            }
        }   
    }