我正在编写一个使用列表内的属性对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;}
}


提前致谢!

最佳答案

通过订购动物,您已经生成了一个新的收集对象。要在调用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)));
}

10-07 13:18
查看更多