2010-12-16 13 views
2

dataContext.Geo_Countries.Where(c => c.Name.Contains(searchKey))。ToList();IQueryableがレコードを返さない場合、ToList()は例外をスローします。

IQueryableがレコードを返さない場合、値のNULL例外が発生します。

解決策は何ですか。

+0

通常、あなたが投稿したステートメントからnull例外を受け取らないようにするために、dataContextまたはGeo_Countriesがnullです。使用しているlinqプロバイダなど、より多くの情報を投稿する必要があるかもしれません。 –

+0

あなたはそのクエリの結果を評価しようとしているのでなければ、例外を取得すべきではありません。 – Vishal

+0

NorthwindデータベースとLINQPadを使用して、これを実行しました: 'Categories.Where(c => c.CategoryName ==" XXXX ")。ToList()。Dump();'そして空のリストを返します。 –

答えて

4

私はマッチがないときに問題が発生しないと思っています。データベースに行があり、Nameの値がないときに問題があると思われます。それとも、あなたが私たちに示されていない何か他のことをやっている。スタックトレースはどのように見えますか?

+0

例外の詳細:System.ArgumentNullException:値にnullを設定することはできません。 パラメータ名:テキスト ソースエラー: ライン69:公共の一覧 SearchCountriesByName(文字列SEARCHKEY) ライン70:{ ライン71:!_dc.Geo_Countries.Where(C => c.Name = NULL && Cを返します。 Name.Contains(searchKey))。ToList(); ライン72:} ライン73:Fに System.Linq.Enumerable.ToList(IEnumerable'1源)+58 OD.Domain.Repositories.GeoRepository.SearchCountriesByName(文字列SEARCHKEY):\ OD \ OD.Domain \リポジトリ\ GeoRepository.cs:71 – Doozie

+0

@Doozie: 'searchKey'は何時でもnullですか? –

2

は、コードが正しく実行されない場合は例外がスローされますのIQueryableにこのコード

dataContext.Geo_Countries.Where(c => c.Name != null && c.Name.Contains(searchKey)).ToList(); 
+0

それは役に立たなかった。私はテーブルに「アメリカ」と「カナダ」という2つのレコードしかなく、searchKeyは「li」です。 nullまたは空白などのレコードはありません。 – Doozie

+0

dataContextまたはGeo_Countriesがnullの場合があります。デバッグモードで確認できますか? –

0

呼び出しToListメソッド()を使用してみてください。次の例では、c.Nameがnullの場合、ToList()は例外をスローします。

void Main() 
{ 
    var countries = new [] { new Country() }.AsQueryable(); 
    countries.Where(c => c.Name.Contains("bubba")).ToList(); 
} 


class Country{ 
    public string Name { get; set; } 
} 
関連する問題