0

私はLINQをあまり使用していませんが、使用すればするほど、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クラスを変更しないようにする方法はありますか?

4

2 に答える 2

1

メソッドにパラメーターがない場合は、プロパティでラップできますか?

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

編集:これは、パラメータが定数またはクラスフィールド/プロパティの場合にも機能します。

于 2010-11-23T10:45:10.673 に答える
0

MSDNのドキュメントには、カスタムソートを実行することは確かに可能であると記載されていますが、私はあなたの質問を誤って解釈した可能性があります。

于 2010-11-23T10:47:19.267 に答える