Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有实体框架的动态谓词_C#_Entity Framework_Dynamic_Linq To Entities - Fatal编程技术网

C# 具有实体框架的动态谓词

C# 具有实体框架的动态谓词,c#,entity-framework,dynamic,linq-to-entities,C#,Entity Framework,Dynamic,Linq To Entities,我正在尝试通过将枚举映射到列字段来使用实体框架构建动态谓词: 我在where子句中输入了??因为我不知道该放什么,我希望这是动态的,就像在本文中一样,尽管这在EF中不起作用;y linq到sql: 例如: 我有一个枚举: public enum SearchTypes { FirstName = CustFName, LastName = CustLName } 我的方法如下: private static IEnumerable<CustomerSearchInfo>

我正在尝试通过将枚举映射到列字段来使用实体框架构建动态谓词:

我在where子句中输入了??因为我不知道该放什么,我希望这是动态的,就像在本文中一样,尽管这在EF中不起作用;y linq到sql:

例如:

我有一个枚举:

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();
        }
私有静态IEnumerable GetCustomers(字符串customerName,SearchType SearchType)
{
使用(var context=newnewGenetities())
{
返回context.tblCustomers.Where(??)。
选择(p=>newcustomersearchinfo
{
FirstName=p.CustFName,
LastName=p.CustLName,
Id=p.CustID,
EmailAddress=p.CustEmail,
Mobile=p.CustMNumber,
电话号码=p.CustPNumber
}).ToList();
}
有人有基于枚举构建表达式的方法吗?

请查看如何将枚举与EF一起使用。虽然要经历很多,但它是有效的

另一种方法是创建一个枚举属性(我们称之为SearchType),然后创建另一个名为SearchTypeId的整数属性。枚举属性封装Id属性,如下所示:

public SearchType SearchType
{
    get
    {
        return (SearchType)this.SearchTypeId;
    }

    set
    {
        this.SearchTypeId = (int)value;
    }
}
是的,这也很难看——但它确实有效

在EF的下一个版本中,它将支持枚举,但这显然不会给您带来太多的代码。

查看如何使用
表达式构建动态linq查询。