0
  const string keyword = "manoj";
        rsp.DataSource = company.GetCompanySearch(keyword);
        rsp.DataBind();

    public List<Company> GetCompanySearch(string keyword)
{
    using (var context = huntableEntities.GetEntitiesWithNoLock())
    {
        List<Company> query = context.Companies.ToList();
        if (!string.IsNullOrEmpty(keyword))
        {
            keyword = keyword.ToLower();
            query =  (List<Company>) 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();
    }
}

次の例外をスローする次のコード:{"タイプ'WhereListIterator1 1[Data.Company]' to type 'System.Collections.Generic.List[Data.Company]'のオブジェクトをキャストできません。"}

4

1 に答える 1

1

"(List)query.Where()"は "(List)(query.Where())"と等しいので、これはその例外をスローします。query.Where()。ToList()を使用する必要がありますが、明示的なキャストは使用しないでください。

さらに、「List query = context.Companies.ToList();」を入れない方がよいでしょう。「if」ステートメントの前。この場合、キーワードが空であるかどうかに関係なく、すべてのレコードがメモリに照会され、パフォーマンスの問題が発生します。以下に変更できます

    IQueryable<Company> query = context.Companies; //Remove ToList()
    if (!string.IsNullOrEmpty(keyword))
    {
        keyword = keyword.ToLower();
        // Remove cast
        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();
于 2012-12-10T06:29:41.497 に答える