での句Iは、エンティティフレームワークを使用していますし、私のようなダイナミックな表現を作成する必要があります。ダイナミックはどこラムダ
var sel = Expression.Lambda<Func<TEntity, bool>>(propertyAccess, parameter);
var compiledSel = sel.Compile();
// sel = x.Name
// filter.Value = "John"
Repository.GetData.Where(item => compiledSel(item) != null && compiledSel(item).ToLower().StartsWith(filter.Value.ToString().ToLower()))
IQueriableと上記の作品を、私はそれは、エンティティフレームワークと連携する必要があります。私は、例えばへ
item => compiledSel(item) != null && compiledSel(item).ToLower().StartsWith(filter.Value.ToString().ToLower())
を解析する必要があることを意味
x => x.Name != null && x.Name.StartsWith("John")
私は動的にフィルタリングできるようにしたい複数のエンティティを持っているので、私はこれをやっている理由があります。
提案がありますか?
編集:
EFに対してクエリ自体がここで実行されます。
private IList<TEntity> GetCollection(Expression<Func<TEntity, bool>> where, Expression<Func<TEntity, object>>[] includes)
{
return DbSet
.Where(where)
.ApplyIncludes(includes)
.ToList();
}
私は今節はParam_0 => (((Invoke(value(....
であると私はThe LINQ expression node type 'Invoke' is not supported in LINQ to Entities.
エラー
方法エンティティ?例えば'class MyEntity:INameable'を' string Name'プロパティに設定し、 'Func'を動的に使うことができます –
'propertyAccess'変数には何が入っていますか? Stringプロパティアクセサ?だから、 'sel'は、例のように、' Expression> 'ではなく、' Expression > 'ですか? –
INamebleを追加する際の問題は、異なるエンティティが多数あることです。したがって、「x.Name」は単なる例に過ぎません。 – h3li0s