我有一个对象列表,其中对象有2个属性:id
和name
。我必须按对象的名称订购列表
我该怎么做?
答案 0 :(得分:4)
您是否尝试过使用linq?
using System.Collections.Generic;
using System.Linq;
namespace Demo
{
public class Test
{
public void SortTest()
{
var myList = new List<Item> { new Item { Name = "Test", Id = 1 }, new Item { Name = "Other", Id = 1 } };
var result = myList.OrderBy(x => x.Name);
}
}
public class Item
{
public string Name { get; set; }
public int Id { get; set; }
}
}
答案 1 :(得分:1)
当有内置方法执行此操作时,Linq对此有点过分了。
如果您指的是数组,只需使用Array.Sort
:
Array.Sort(items, (x, y) => x.Name.CompareTo(y.Name));
如果您的意思是List<T>
,请在那里使用Sort
功能:
items.Sort((x, y) => x.Name.CompareTo(y.Name));
答案 2 :(得分:1)
如果您正在处理这些对象的List,最简单的方法是为Sort方法提供比较:
var list = new List<MyObject>();
...
list.Sort((item1, item2) => item1.Name.CompareTo(item2.Name));
(上面的示例不对名称进行空值检查)
这很简单,因为字符串实现了IComparable<string>
。另一种方法是让您在课堂上实施IComparable<MyObject>
,然后拨打list.Sort()
答案 3 :(得分:0)
Sort
类的List<T>
方法有一个重载,需要进行自定义比较:
list.Sort((x,y) => x.Name.CompareTo(y.Name));