c# - 使用 LINQ 对包含列表和更新对象的对象进行排序

标签 c# linq sorting

我正在编写一个函数来使用列表中的属性对 List 进行排序。 我需要使用列表 AnimalList 的属性 AgeMyClass 对象 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/

相关文章:

java - 如何在 Java 中对由数字和字母组成的字符串列表进行排序?

python 自定义排序列表 1/2/3/../9/10

c# - ComboBox 不调用 MyClass.ToString()

c# - 如何在物理路径中下载一个空的 Excel 文件

C# UTF8 输出保持编码字符完整

c# - LINQ与 Entity Framework ,获取计算总和

c# - 在 C# 中使用 Neo4jClient 在 Neo4j 中创建节点之间的关系

c# - CRM 2011 自定义工作流 Linq 查询在不为空时提供空值

c# - 如何使用 LINQ 根据需要拆分的字符串列表筛选数据表?

matlab - 去除字符串中重复的相邻字符