我正在尝试通过将枚举映射到列字段来使用Entity Framework构建动态谓词:
在我输入的where子句中?因为我不知道该放在那里,我希望这是动态的,就像在本文中一样,虽然这对我来说不适用于EF; y linq to sql:
How to specify dynamic field names in a Linq where clause?
例如:
我有一个枚举:
public enum SearchTypes {
FirstName = CustFName,
LastName = CustLName
}
我的方法是这样的:
private static IEnumerable<CustomerSearchInfo> GetCustomers(String customerName, SearchType searchType)
{
using (var context = new NewgenEntities())
{
return context.tblCustomers.Where(??).
Select(p => new CustomerSearchInfo
{
FirstName = p.CustFName,
LastName = p.CustLName,
Id = p.CustID,
EmailAddress = p.CustEmail,
Mobile = p.CustMNumber,
Phone = p.CustPNumber
}).ToList();
}
有没有人有基于枚举构建表达式的方法?
答案 0 :(得分:1)
使用EF查看this post使用枚举。经历了很多事情,但它确实有效。
另一种方法是创建1个属性,即enum(让我们称之为SearchType),然后创建另一个名为SearchTypeId的整数属性。 enum属性封装Id属性,如下所示:
public SearchType SearchType
{
get
{
return (SearchType)this.SearchTypeId;
}
set
{
this.SearchTypeId = (int)value;
}
}
是的,这也很难看 - 但它确实有效。
在EF的下一个版本中,它会支持枚举,但这显然不会给你太多代码。