2016-08-03 8 views
0

enter code here私はTerm Termのリストであるデータメンバー用語を含むGlobalTermsクラスを持っています。IEnumerableのアイテムの値を別のクラスのメンバーで取得するにはどうすればよいですか?

各Termクラスには3つのメンバーがあります。

  1. int Id;
  2. bool IsApproved;
  3. 文字列注:

ので、それは次のようになります。私はGlobalTermsオブジェクト(globalTerms)をお持ちの場合

Class GlobalTerms 
{ 
    IEnumerable<TermInfo> UserTerms; 

} 

Class TermInfo 
{ 
    public int Id { get; set; } 
    public string Note{ get; set; } 
    public bool IsApproved{ get; set; } 
} 

、どのように私は、terminfoのStatusがTrue等しいTERMINFOオブジェクトを取得することができますか?

私はこのような何かを書き込もうとしました:

 GlobalTerms globalTerms = new GlobalTerms(); 
       globalTerms.UserTerms.Where(x => x.IsApproved.Equals(true)) 
        .Select(x => x.Id); 

私のタスクはUserTerms内のすべての項目がIsApproved分野で真の持っていることをチェックしていました。 結果で私はエラーを受け取りました: System.ArgumentNullException:値をnullにすることはできません。パラメータ名:すべての人に

*termsList* - is a IList<GlobalTerms> 

foreach (var singleTerm in termsList) 
      { 
       var sourceTermsList = singleTerm.UserTerms.ToList(); 
       foreach (var status in sourceTermsList) 
       { 
        status.IsApproved.Should().BeTrue(); 
       } 
      } 

ありがとうございガイズ、

:結果で 、この問題が解決された次のコードを使用:ソース は

はANSWER

は、あなたの助けを事前にありがとうございます
+1

NREは、 'GlobalTerms iTerms = new GlobalTerms();'、 'iTerms.UserTerms.Where ....'のように、あなたのオブジェクトに 'UsersTerms'をインスタンス化していないため、Nullです。 'Where'を使ってみると、例外が出ます。それが修正されたら、条件を 'Where(x => x.IsApproved)'に変更することができます。 – Habib

+0

それは単純ですが、上記のコードは他のソースからのリストを作成しないと便利ではないので、関連するコードが不足している可能性があります。 –

+0

ハビブ、ありがとう、あなたの考え:)私はこの問題を解決するのに役立ちます。 – Cindy

答えて

0

新しいオブジェクトを作成し、そのプロパティUserTermsがnullです

0

0123を初期化することはありませんのメンバーがGlobalTermsであるため、GlobalTermsという新しいインスタンスを作成すると、UserTermsIEnumerableはnullになります。あなたはそれに対してlinqクエリを実行する前に、ある種の非nullコレクションに設定する必要があります。

またIsApprovedのメンバーは?それがあなたの問題かもしれないnull可能な型の場合。

+0

申し訳ありませんが、私は間違っています、isApprovedはここにあります:クラスTermInfo { public int Id {get;セット; } 公開ストリング注{get;セット; } パブリックbool isApproved {get;セット; } } – Cindy

関連する問題