2017-03-22 13 views
-5

ich eine Liste A haben, wie unteneine Liste in eine andere Liste hinzufügen in C#

var act= (from a in _db.Activities 
          where a.UserID == userid 
          select new SchoolDetail 
          { 
           SchoolName = a.School, 
           SchoolCode = a.SchoolID 
          }).Distinct().ToList(); 

Dann habe ich eine andere Liste Liste B

var sch= (from s in _db.Schools 
          where s.UserID == userid 
          select new SchoolDetail 
          { 
           SchoolName = s.SName, 
           SchoolCode = s.SCode 
          }).Distinct().ToList(); 

Jetzt will ich Liste B anhängen A zur Liste und ich habe versucht, mit AddRange -

var schools = act.AddRange(sch); 

Aber ich erhalte eine Fehlermeldung auf AddRange line -

Ausnahmen - Argument null Ausnahme
kann nicht ungültig zu einem zuweisen implizit typisierte Variable

Was mache ich falsch und wie kann ich es beheben?

Danke!

+1

hat Google die Fehlermeldung? Bitte fügen Sie Links zu Ihren Forschungsergebnissen bei und erklären Sie speziell, wie sie Ihnen nicht geholfen haben. Ich habe es selbst gegoogelt, und die erste Seite der Ergebnisse ist immer wieder die gleiche Frage ... Ich kann es kaum glauben, dass es einfacher und schneller war, hier eine SO-Frage zu formulieren als einfach nur zu googeln .... –

+1

Zusätzlich zu dem, was Rory gesagt hat, hast du den Fehler gelesen? Es ist ziemlich selbsterklärend. – tnw

+0

Für Details zu Ausnahme siehe: https://msdn.microsoft.com/en-us/library/z883w3dc(v=vs.110).aspx, d. H. Ihre Variable 'sch' ist null und daher die Ausnahme. Fügen Sie einige Nullprüfungen hinzu, um eine Ausnahme zu vermeiden. –

Antwort

0

es Gelöst eine Concat statt AddRange

var schools = act.Concat(sch); 
-1

Die Funktion "AddRange" fügt die Liste sch dem List-Act hinzu und ist ein void, es gibt nichts zurück. Ich denke, was würden Sie wollen so etwas wie:

 List<...> schools = new List<...>(act); 
     schools.AddRange(sch); 
+0

In diesem Fall wäre der Fehler: Kann nicht void zu einer implizit typisierten lokalen Variable zuweisen –

0

Ihre besondere Problem leitet sich von einem Nullwert verwendet wird. Ihr sch ist entweder null oder enthält eine Null. Anstatt die AddRange, die eine Sammlung ändern wird, an das Ende der anderen anzuhängen. Vielleicht möchten Sie die Concat verwenden. Dadurch wird eine separate Instanz Ihrer Sammlung erstellt und versucht, sie zu verbinden, ohne die Daten zu ändern. So wird eine null eine concat nicht behindern.

Andernfalls, um Ihr spezifisches Problem zu lösen, sollten Sie eine Nullprüfung durchführen.

var school = ...; 
var student = ...; 

var sample = school.Concat(student); 

var school = ...; 
var student = ...; 
var filter = school.Where(d => d != null); 
var sample = student.AddRange(school); 
Verwandte Themen