是否可以将LinqDataSource.OrderBy设置为方法的结果?

时间:2010-11-23 09:30:45

标签: c# linqdatasource

我没有广泛使用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类?

2 个答案:

答案 0 :(得分:1)

如果方法没有参数,你可以用属性包装吗?

public int SortOrderBy { get { return GetSortValue(); } }

编辑:如果参数是常量或类字段/属性,这也可以。

答案 1 :(得分:0)

MSDN docs提到确实可以进行自定义排序,但我可能误解了你的问题。