クラスを再利用できるように、いくつかのラムダ式を使用して型から値を選択するジェネリック型クラス Filter があります。そのクラスは別のジェネリック型クラス Search で使用されます。Search は Filter を使用して、最終的にドロップダウン リストで使用される型の個別の項目を選択します。
これらの重要でないコードを削除しました。
public class Filter<T>
{
public string Name;
public Func<T, string> Key;
public Func<T, string> Value;
}
public class Search<T>
{
MyDBContext db = new MyDBContext();
IQueryable<T> Model = db.Stuff.OrderBy(a => a.TermID);
Filter filter = new Filter(
Name: "Term",
Value: a => a.TermID.ToString(),
Key: a => a.Term.TermType.Name
);
var filterItems = Model
.Select(a => new { Key = filter.Key(a), Value = filter.Value(a)})
.OrderBy(t => t.Key)
.Distinct()
.ToArray();
}
実行時エラーが発生します。The LINQ expression node type 'Invoke' is not supported in LINQ to Entities.
匿名型の代わりに強力な型を使用してExpression<Func<T,string>>
、フィルターで使用しようとしました。
何時間も検索してさまざまなことを試した後、これを機能させる方法がわかりません。ご協力ありがとうございました。