1

現在、果物、グレード、価格のデータを含むテーブルがあります。私のテーブルで利用可能なグレードはABCです。コード スニペットを見てください。ご覧のとおり、フィルターにDを入れました。nullになるwhereと思います。queryしかし、コードを実行した後、プログラムは「Not Null? WTH?」と表示します。では、表にない場合にDqueryを検出する方法を教えてください。

p/s: 私は初心者です

C# コード スニペット:

 var query = (from p in db
              where p.grade == "D"
              select p.price).ToArray();

 if (query == null)
              System.Console.WriteLine("You get Null in the query");
 else if (query != null)
              System.Console.WriteLine("Not Null? WTH?");
4

3 に答える 3

4

あなたがやっているのでToArray、nullになることはありません。長さを確認できます。

if(query.Length <= 0)

または、次のようにするとさらに良くなります。

var query = (from p in db
            where p.grade == "D"
            select p.price).Count();

if(query > 0)

また

var ifItemExist = (from p in db
                   where p.grade == "D"
                   select p.price).Any();

または短い:

var ifItemExist = db.Any(p=> p.grade == "D");
于 2012-12-13T07:16:25.403 に答える
3

このメソッドは引き続き配列を返すため、null は取得されません。配列は空になりますが、配列は null にはなりません。(これが実際に null が存在する理由です...「ゼロ」値と値の不在を区別するためです。

結果に要素があるかどうかをテストする場合は、次を使用できます。

if (query.Any())
于 2012-12-13T07:20:24.363 に答える
2

実際にはnullではなく、nullとは異なる空の配列を返しています。

または、これを行うことができます。

int query = (from p in db
              where p.grade == "D"
              select p.price).Count();

 if (query > 0)
 {
    System.Console.WriteLine("Found");
 }
  else
 {
    System.Console.WriteLine("Not Found");
 }
于 2012-12-13T07:16:45.073 に答える