我有一个泛型类型类过滤器,它需要一些 lambda 表达式来从类型中选择值,以便该类可重用。该类在另一个通用类型类 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>>
在过滤器中使用。
经过数小时的搜索和尝试不同的事情,我不知道如何使这项工作。感谢您的帮助。