public class SortExample
{
public int IntField {get; set;}
public string StringField {get; set;}
public DateTime DateField {get; set;}
}
此类被设置为listview的源,并且下面函数中传递的sortExpression参数是具有排序顺序的属性名称'IntField ASC''IntField DESC''StringField ASC''StringField DESC'
public void SortExampleMethod(string sortExpression)
{
List<SortExample> list = new List<SortExample>();
list.OrderBy(sortExpression);
}
实现这一点的唯一方法是为LINQ中的每个属性写一个Comparator,这样可以轻松完成吗?
2 回答
像这样的东西:
list.OrderBy(x => x.property);
https://msdn.microsoft.com/en-us/library/bb534966.aspx
要做你需要的,你可以使用LINQ动态查询库,它允许你将
string
传递给你的OrderBy
.例如:
var result = list.OrderBy("intField asc");
这里完整的教程
https://weblogs.asp.net/scottgu/dynamic-linq-part-1-using-the-linq-dynamic-query-library
另一种解决方案是使该方法接受
Expression
类