2011-12-21 16 views
2

すべての不要な変数を削除して、手元の問題に直接集中しようとしました。私は、null値を返すことができる変数を持っている:null値をリストに追加できるようにする

var ppl = from p in xyz.new_ppl 
      select new 
      { 
       p.name 
      }; 

私はそれを照会し、リストに追加:

foreach (var peeps in ppl) 
{ 
    peopleList.Add(peeps.name); 
    peopleNames = peopleList; 
} 

私は句を確認するには、SELECTステートメントの前にチェックするために場所を追加するときにこれは動作しますこのステートメントを使用してヌル値の場合

where p.name != null 

null値を追加することができます。私はfirstordefault試みたが、そのdidntの仕事

name = p.name.FirstorDefault() 

は、エラーが、私は、文字列に文字をキャストすることはできませんと言っています。 peopleNamesはsetterで、string型のgetterメソッドです。回避策または解決策

+0

この 'peopleNames = peopleList; 'がループ内にあるのはなぜですか? – V4Vendetta

+0

元のコードを実行すると、そのエラーはどうなりますか? p.name.FirstOrDefault()の内容と使用時のエラーを無視してください。とにかくあなたが望むものではありません。 – HackedByChinese

+0

@HackedByChinese私は今、そのマシンから離れていますが、nullポインタ例外が発生していました。私がデータをチェックすると、peeps.nameにはまだ1つのnull値があり、それでもリストに渡したいと気づきました。 –

答えて

0

このようにしますか?あなたは、文字列p.nameの最初の文字を取得しようとすることを意味し

var ppl = from p in xyz.new_ppl 
      select new 
      { 
       p == null ? null : p.name 
      }; 
+0

@abatishchev私は間違いなく他のコンピュータにアクセスできるときに試してみます。 –

+0

@ジョン:実際には、モノの答え(右のアバター)です:)私はそれを編集しました(左のアバター) – abatishchev

+0

@ mono68:私の悪い..私はそれをチェックしてお知らせします。ありがとうございました –

2
from p in xyz.new_ppl 
select p.name; 
+0

@ aba:あなたの答えの説明を与えるようにしてください。これは新しいユーザーのために役立つ可能性があります。 – karthik

+0

@abaあなたの返事に感謝します。しかし、私が述べたように、私は質問をあまりに単純化しました。 p.name、p.ageなど複数の値を取得する必要がある...私はこれを試みたが、最終的には複数の属性を取得するために匿名変数を作成しなければならないと思ったが、後ほど確認する。 –

0

あなたがp.name.FirstorDefault()を行います。だからコンパイラのエラーは正しいです(暗黙的に文字を文字列に変換できない理由は考えられませんでしたが、それは別の話です))

nullを追加したい場合は、where p.name != nullを削除してください。

+0

ここでp.name!= nullを削除すると、nullは追加されません。私はnullポインタの例外を取得します。私はこれを理解しているようには見えないので、すべてのnull roww値の代わりに空の文字列変数を設定してnull値を処理しました。 –

+0

どのようなタイプの 'peopleList'ですか?スタックトレースと例外メッセージを貼り付けることができますか? –

+0

人物リストは文字列です。私は現在、コードにアクセスすることはできません。私が結論したのは、属性のひとつがpであれば、新しい{x = p.name、y = p.age ...など}を選択することです。年齢はnullです。私にとってはnull例外がスローされます。私はy == nullのようなことをすることで可能な限りあらゆる方法で処理しようとしましたか? null:p.ageまたはy = p.age ?? "null"なので、そんなに役に立たない。実際には、p.age!= nullの部分を実際にインクルードするだけです。つまり、p.nameにデータが含まれていても、行全体をスキップして次の行に移動します。できるだけ早くスタックトレースを貼り付けます –

関連する問題