1
エンティティプロパティをLINQ式のパラメータとして渡すにはどうすればよいですか?私はこのようにそれを使用することになりますエンティティプロパティをLINQ式のパラメータとして渡すにはどうすればよいですか?
public DropdownFilter(WhatTypeHere? ABC)
{
// I want to store a selected property here
// ABC must be a property of TEntity
this.ABC = ABC;
}
// I want the class to encapsulate a LINQ query and just parametrize it with a property
public override IQueryable<TEntity> Filter(IQueryable<TEntity> filteredEntityCollection, string value)
{
// ABC is a property of TEntity
return filteredEntityCollection.Where(this.ABC == value);
}
:
new DropdownFilter<Invoice>(invoice => invoice.SomeProperty);
私はすでに、パラメータのExpression<Func<TEntity, string>>
種類で試してみましたが、それはうまくいきませんでした。文句を言っている
The LINQ expression node type 'Invoke' is not supported in LINQ to Entities.
これは素晴らしいことですが、それはうまくいくでしょうが、 'TProperty'を上向きに伝播する方法を理解する前にそれを使うことはできません。すべての' filters'が基本クラスから継承しているので、これは別のオブジェクトのリストプロパティとして使用されています... –
@HristoYankovまあ、TPropertyを削除して、以前のように 'string'を使うことができます(しかし、' propertyInfo.PropertyType'をstringにチェックしてください)か、 'object'を値として、それを' Expression.Convert(Expression.Constant(value)、propertyType) 'でプロパティ型に変換します。 –