【问题标题】:Predicate builder contains谓词构建器包含
【发布时间】:2012-05-20 12:30:02
【问题描述】:

我正在尝试使用谓词生成器通过 MVC3 执行查询。我收到了错误

“无法将类型 'System.Boolean' 转换为类型 'System.Object'。LINQ to Entities 仅支持转换实体数据模型原始类型。”

我已通过如下查询

if (!string.IsNullOrEmpty(SearchObj.EmployeeIDSortId.ToString()) && SearchObj.EmployeeIDSortId > 0)
    {

        string[] vals =new string[' ']; 
        if (SearchObj.EmployeeIDSortId == 1)
        {
            vals = new string[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k","l" };

        }
        else if (SearchObj.EmployeeIDSortId == 2)
        {

            vals = new string[] { "m", "n", "o", "p", "q", "r", "s" };

        }
        else if (SearchObj.EmployeeIDSortId == 3)
        {


            vals = new string[] { "t", "u", "v", "w", "x", "y", "z" };
        }


        employeepredicate =
            employeepredicate.And(emp => emp.EmployeeName.Substring(0, 1).ToLower().Equals(vals.Any()));


         }

您能否建议这有什么问题,我想这只是由于我的查询 vals.Any()。

谢谢

【问题讨论】:

    标签: asp.net-mvc-3 entity-framework contains predicate


    【解决方案1】:

    让我作为序言 - 我不熟悉 And 方法,但 .Equals(vals.Any()) 对我来说看起来不合适。所以,我假设And 接受一个返回布尔值的函数。您真正要查找的是找出员工姓名中的第一个字符是否包含在 vals 数组中:

    employeepredicate = employeepredicate.And( emp => vals.Contains(emp.EmployeeName.Substring(0, 1).ToLower()));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多