我正在编写一个函数来使用列表中的属性对 List
进行排序。
我需要使用列表 AnimalList
的属性 Age
对 MyClass
对象 obj
进行排序,并将排序后的列表分配回去到 obj
。执行函数 obj
后,应该使用新的排序对象进行更新。我的列表值现在已经排序了。我需要将其更新为 obj。
我尝试了很多可能性,但无法将列表绑定(bind)到对象。
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)));
}
关于c# - 使用 LINQ 对包含列表和更新对象的对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26728857/