我没有广泛使用LINQ,但我使用的越多,我就越发现它有多强大。如果要从有界项上的属性进行排序,那么使用LinqDataSource.OrderBy子句显然很容易,但如果要根据方法返回对项进行排序,该怎么办?以此类为例(请忽略古怪的设计 - 它只是用来强调我的观点):
public class DataItem
{
private string Id { get; set; }
private int SortValue { get; set; }
public DataItem(string id, int sortValue)
{
this.Id = id;
this.SortValue = sortValue;
}
public int GetSortValue()
{
return SortValue;
}
}
有没有办法可以在LinqDataSource上设置orderby表达式,以便它使用从GetSortValue返回的值(即除了属性之外的其他成员的顺序)但不改变DataItem类?
答案 0 :(得分:1)
如果方法没有参数,你可以用属性包装吗?
public int SortOrderBy { get { return GetSortValue(); } }
编辑:如果参数是常量或类字段/属性,这也可以。
答案 1 :(得分:0)
MSDN docs提到确实可以进行自定义排序,但我可能误解了你的问题。