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();
    }

クエリで結果が得られません。データベースには manoj という名前の 27 のレコードがあります。これの内部例外は null です

4

1 に答える 1

0

IEnumerable<Company> query = ...行を次のように変更すると、期待どおりに動作するはずです

var query = context.Companies;

これは に変わりqueryIQueryable<Company>その式は行によって拡張されますquery = query.Where(...。これは、Contains式が SQL に変換される方法で行われます ( LIKE)。

現在のコードでは、すべての会社をメモリにフェッチしContains、linq-to-objects によって実行されます。これは大文字と小文字が区別されるため、一致が得られなかったと思います。SQL はおそらく大文字と小文字を区別しません。それは、データベースの照合に依存します。

于 2012-12-10T13:37:39.563 に答える