13

エラーは

LINQ to Entities はメソッド 'System.Object GetValue(System.Object, System.Object[])' メソッドを認識せず、このメソッドはストア式に変換できません。

私のコードは

public static GridResult GetAllUsers(int count, int tblsize,string sortcreteria)
{
      using (UserEntities entity = new UserEntities())
      {

          var data = entity.User_Details.Take(count)
.OrderBy(i =>.GetType().GetProperty(sortcreteria).GetValue(i,null))
.Skip(tblsize).ToList();
          result.DataSource = data;
          result.Count = entity.User_Details.Count();
      }
      return result;
}

プロパティ名を文字列としてソートする方法は?

4

3 に答える 3

4

(やや古い)動的LINQライブラリを使用してこれを行うことができます:

var data = entity.User_Details
    .Take(count)
    .OrderBy(sortcriteria)
    .Skip(tblsize)
    .ToList();

または、LINQ to Entities プロバイダーは Reflection API の呼び出しを SQL に変換できないため、最初にオブジェクトをメモリに移動することにより、元のクエリを使用してシーケンスを並べ替えることができます。

var data = entity.User_Details
    .Take(count)
    .Skip(tblsize)
    .AsEnumerable()
    .OrderBy(i => i.GetType().GetProperty(sortcriteria).GetValue(i, null))
于 2013-04-15T11:22:12.500 に答える
1

おそらくExpression Trees、Linq ステートメントを作成するために を使用する必要がありますOrderBy(x => x.SomeProperty)

LINQ/Lambda の OrderBy 式を作成する

その場でLINQ to entity OrderBy式を作成する

于 2013-04-15T11:36:01.383 に答える