0
 const string keyword = "manoj";
        rsp.DataSource = company.GetCompanySearch(keyword);
        rsp.DataBind();
    using (var context = huntableEntities.GetEntitiesWithNoLock())
    {
        IEnumerable<Company> query = context.Companies.ToList();
        if (!string.IsNullOrEmpty(keyword))
        {
            keyword = keyword.ToLower();
            query =  query.Where(u=>u.CompanyName.Contains(keyword)
                || u.EmailAdress.Contains(keyword)
                ||u.MasterCountry.Description.Contains(keyword)
                ||u.MasterIndustry.Description.Contains(keyword)
                ||u.CompanyDescription.Contains(keyword)
                ||u.CompanyHeading.Contains(keyword));
        }
        return query.ToList();
    }

查询没有得到结果。该数据库有 27 条名为 manoj 的记录。内部异常为 null

4

1 回答 1

0

如果将行更改为,它应该可以按预期IEnumerable<Company> query = ...工作

var query = context.Companies;

这变成query了一个IQueryable<Company>,其中的表达式将被行扩展query = query.Where(...。这将通过将Contains表达式转换为 SQL ( LIKE) 的方式完成。

在您当前的代码中,您将所有公司获取到内存中,Contains并由 linq-to-objects 执行。这是区分大小写的,我认为你没有得到任何匹配的原因。SQL 可能不区分大小写。这取决于您的数据库的排序规则。

于 2012-12-10T13:37:39.563 回答