2016-08-03 16 views
0

enter code here Ich habe GlobalTerms-Klasse, die eine Datenelement-Begriffe enthält, die eine Liste des Typs Term ist.Wie kann ich den Wert des Elements in IEnumerable mit Member in einer anderen Klasse abrufen?

Jede Term-Klasse hat 3 Mitglieder.

  1. int Id;
  2. bool IsApproved;
  3. Zeichenfolge Hinweis;

so sieht es aus wie:

Class GlobalTerms 
{ 
    IEnumerable<TermInfo> UserTerms; 

} 

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

Wenn ich ein GlobalTerms Objekt (globalTerms), wie kann ich ein Objekt erhalten Term, wo der Status in Term Wahr ist gleich?

Ich habe versucht, so etwas zu schreiben:

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

Meine Aufgabe, dass alle Elemente in UserTerms war die Überprüfung in IsApproved Feld wahr ist; Im Ergebnis habe ich Fehler erhalten: System.ArgumentNullException: Wert kann nicht null sein. Parametername: Quelle Vielen Dank im Voraus für Ihre Hilfe,

ANTWORT: Im Ergebnis dieses Problem gelöst wurde verwendet, um den nächsten Code:

*termsList* - is a IList<GlobalTerms> 

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

Dank Jungs für alle,

+1

Die NRE ist, weil 'GlobalTerms iTerms = neue GlobalTerms();' und dann 'iTerms.UserTerms.Where ....', Sie haben 'UsersTerms' in Ihrem Objekt nicht instanziiert, es ist' Null' und wann Sie versuchen, 'Where' darauf zu verwenden, erhalten Sie eine Ausnahme. Sobald das behoben ist, können Sie Ihre Bedingung zu 'Where (x => x.IsApproved)' – Habib

+0

Ich hoffe, es ist so einfach, aber der obige Code würde nie etwas nützliches tun, ohne dass diese Liste von einer anderen Quelle bevölkert, so dass wir könnte nur relevanten Code fehlen. –

+0

Habib, vielen Dank für deine Idee :) Es hilft mir, dieses Problem zu lösen. – Cindy

Antwort

0

Sie erstellt neues Objekt und seine Eigenschaft UserTerms ist null

0

Sie initialisieren nie die UserTerms Mitglied in GlobalTerms, wenn Sie also eine neue Instanz von GlobalTerms erstellen, ist UserTermsIEnumerable null. Sie müssen es auf eine Nicht-Null-Sammlung irgendeiner Art setzen, bevor Sie linq-Abfragen dagegen ausführen können.

Auch, was ist das IsApproved Mitglied? Wenn dies ein NULL-fähiger Typ ist, könnte dies Ihr Problem sein.

+0

Sorry, ich habe einen Fehler gemacht, isApproved ist hier: Class TermInfo { public int Id {get; einstellen; } öffentliche Zeichenfolge Hinweis {get; einstellen; } öffentliche Bool isApproved {bekommen; einstellen; } } – Cindy

Verwandte Themen