使用LINQ对包含List和更新对象的对象进行排序

时间:2014-11-04 06:17:27

标签: c# linq sorting

我正在编写一个函数来使用列表中的属性对List进行排序。 我需要使用列表MyClass的属性objAge对象AnimalList进行排序,并将已排序的列表分配回obj。执行函数obj后,应使用新的已排序对象进行更新。我的列表值现在已经有了排序列表。我需要将其更新为obj。

我尝试过很多种可能性,但无法将列表绑定到对象上。

public void SortBlocks(MyClass obj)
{
    List<Animal> value = obj.AnimalList;
    value = value.OrderBy(val => val.Age).ToList();
}

public interface MyClass 
{
     List<Animal> AnimalList { get; set; }
}
public class Animal
{
    public string color{get;set;}
    public uint Age{get;set;}
}

提前致谢!

2 个答案:

答案 0 :(得分:0)

试试这个: -

List<Animal> value = obj.AnimalList;
obj.AnimalList = value.OrderBy(x => x.Age).ToList();

答案 1 :(得分:0)

您已经通过订购动物生成了一个新的集合对象。要在调用SortBlocks后查看obj中的排序结果,需要将值赋给obj.AnimalList:

public static void SortBlocks(MyClass obj)
{
    List<Animal> value = obj.AnimalList;
    value = value.OrderBy(val => val.Age).ToList();
    obj.AnimalList = value;
}

编辑:顺便说一句,您可以像这样进行就地排序:

public static void SortBlocks(MyClass obj)
{
    obj.AnimalList.Sort(new Comparison<Animal>((x, y) => x.Age.CompareTo(y.Age)));
}