查询未执行但未获取结果

时间:2012-12-09 06:55:42

标签: c# asp.net linq

 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

1 个答案:

答案 0 :(得分:0)

如果您将行IEnumerable<Company> query = ...更改为

,它应该按预期工作
var query = context.Companies;

这会将query变为IQueryable<Company>,其中的表达式将由行query = query.Where(...扩展。这将以Contains表达式转换为SQL(LIKE)的方式完成。

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