C# 对列表排序<;T>;通过T';s属性
我有一个C# 对列表排序<;T>;通过T';s属性,c#,C#,我有一个列表 如何按T的int属性之一对其进行升序排序 我知道我可以手动创建我自己的方法,但是有什么方法可以像List.Sort(按T的int属性)那样简洁地实现这一点吗 您可以使用可枚举Orderby按其属性进行排序 List<yourType> yourCollection = YourSourceList.OrderBy(e=>e.YourProperty).ToList(); List yourCollection=YourSourceList.OrderBy(e=>
列表
如何按T的int属性之一对其进行升序排序
我知道我可以手动创建我自己的方法,但是有什么方法可以像
List.Sort
(按T的int属性)那样简洁地实现这一点吗 您可以使用可枚举Orderby按其属性进行排序
List<yourType> yourCollection = YourSourceList.OrderBy(e=>e.YourProperty).ToList();
List yourCollection=YourSourceList.OrderBy(e=>e.YourProperty.ToList();
是的,您可以使用:
一种效率较低但可读性更高的方法是使用可枚举的
list = list.OrderBy(t => t.IntProperty).ToList();
试试这个:
List<T> lst=List<T>.OrderBy(x => x.Property).ToList();
List lst=List.OrderBy(x=>x.Property.ToList();
他们尝试将此代码添加到您的列表中,以便对ASC/DESC进行排序
List<HRDocumentCheckList> ser=new List<HRDocumentCheckList>();
ser.OrderByDescending(q => q.Document.Id).ToList();
List ser=newlist();
ser.OrderByDescending(q=>q.Document.Id).ToList();
希望它能帮助你编写自己的课程。然后使用该类进行排序,例如:
myList.Sort(new MyListComparer());
对于那些没有特权使用Lamda表达方法的人,这被接受为答案,他们可以遵循下面给出的方法。核心思想是实现
IComparable
,从而检查对象中定义的任何特定属性/字段,这里是“Person
”
public class ConsoleApp
{
private static void Main(string[] args)
{
List<Person> p = new List<Person>();
p.Add(new Person() {Age = 25, Name = "Jo"});
p.Add(new Person() {Age = 10, Name = "Jo"});
p.Add(new Person() {Age = 2, Name = "Jo"});
p.Sort();
}
}
public class Person : IComparable<Person>
{
public string Name { get; set; }
public int Age { get; set; }
public int CompareTo(Person other)
{
return other == null ? 1 : Age.CompareTo(other.Age);
}
}
公共类控制台
{
私有静态void Main(字符串[]args)
{
列表p=新列表();
p、 添加(newperson(){Age=25,Name=“Jo”});
p、 添加(newperson(){Age=10,Name=“Jo”});
p、 添加(newperson(){Age=2,Name=“Jo”});
p、 排序();
}
}
公共类人物:i可比较
{
公共字符串名称{get;set;}
公共整数{get;set;}
公共int比较(其他人)
{
返回other==null?1:Age.CompareTo(other.Age);
}
}
是否允许您使用LINQ?您是指按属性进行常规排序,还是仅指您也具有完全访问权限的常规列表
?谁想对否决票进行评论?3次否决票以获得正确答案?wtf?+1对这个好答案投了赞成票,并减少了否决票的影响:)@TimSchmelter感谢您的反馈。我改了。不是林克。这是一个简单的可枚举类。Enumerable.OrderBy
和ToList
是Linq方法,ToList
创建一个新的列表
,即使已经有一个。List.Sort
(或Array.Sort
)的目的是避免创建新的集合,因为这会使所需内存(暂时)翻倍:@TimSchmelter,我知道。ToList()创建一个新的。Sort()将在同一列表中进行更改。所以排序是有效的。Linq是它的名称空间中的内容,Enumerable
是系统的一部分。Linq
名称空间。这是Linq To Objects
@TimSchmelter,谢谢你提供的信息。
public class ConsoleApp
{
private static void Main(string[] args)
{
List<Person> p = new List<Person>();
p.Add(new Person() {Age = 25, Name = "Jo"});
p.Add(new Person() {Age = 10, Name = "Jo"});
p.Add(new Person() {Age = 2, Name = "Jo"});
p.Sort();
}
}
public class Person : IComparable<Person>
{
public string Name { get; set; }
public int Age { get; set; }
public int CompareTo(Person other)
{
return other == null ? 1 : Age.CompareTo(other.Age);
}
}