1

DGV の並べ替え (バインドまたは LINQ) に最適なルート (またはベスト プラクティス) を決定しようとしています。

私がやりたいことは、ユーザーからパラメーターを受け取るメソッドを作成することです (この場合、ヘッダーのマウス クリックと並べ替え方向 (並べ替えられている場合) を識別することになります)。次に、メソッドはパラメーターを受け取り、LINQ ステートメントで使用します。

クエリ = query.OrderBy(a => a.Code);

メソッドでは、「OrderBy」を変数と「Code」に置き換えたいと思います。しかし、私は正しい構文を持っていません。また、これが良い方法であるかどうかもわかりません。コードを繰り返さないようにするのは理にかなっていますが、LINQ は良いルートですか?

        var sortOrder = "OrderByDescending";
        var sortColumn = "Code";
        query = query.sortOrder(a => a.sortColumn);

私のセットアップ:データベースから取り込まれたC#dataGridView。LINQ フィルタリングは DataAccess プロジェクトに存在します。

ありがとう、ブライアン。

編集: WinForms と LINQ to EF。

4

1 に答える 1

1

このようなリフレクションまたは動的LINQを使用してみることができます

  var sortOrder = "OrderByDescending";
  var sortColumn = "Code";
  if(sortOrder =="OrderByDescending")
     query = query.OrderByDescending(a => GetPropertyValue(a,sortColumn));
  else 
     query = query.OrderBy(a => GetPropertyValue(a,sortColumn));



private static object GetPropertyValue(object obj, string property)  
{  
    System.Reflection.PropertyInfo propertyInfo=obj.GetType().GetProperty(property);  
    return propertyInfo.GetValue(obj, null);  
}  
于 2013-07-03T01:14:42.250 に答える