2017-02-26 1 views
0

Ich versuche, meine zwei verschiedenen Entitäten zu einer neuen Entität zu kombinieren. Hier ist ein Beispiel meiner Klasse Einheit:Kombinieren Sie zwei Entitäten in einem mit LINQ

public class CarOne 
    { 
     public string Name { get; set; } 

     public string Model { get; set; } 

    } 

    public class CarTwo 
    { 
     public int Year { get; set; } 

     public string Description { get; set; } 

    } 

Jetzt möchte ich alle meine Liste von zwei enties in diese neue Einheit speichern:

public class CarFinal 
    { 
     public string Name { get; set; } 

     public string Model { get; set; } 

     public int Year { get; set; } 

     public string Description { get; set; } 

    } 

Hier wird die Probe von meinem Code:

 CarOne carToyota = new CarOne() 
     { 
      Name = "Toyota", 
      Model = "Camry" 
     }; 

     CarTwo carDetails = new CarTwo() 
     { 
      Year = 2012, 
      Description = "This is a great car" 
     }; 

     List<CarOne> lstFirst = new List<CarOne>(); 
     lstFirst.Add(carToyota); 

     List<CarTwo> lstSecond = new List<CarTwo>(); 
     lstSecond.Add(carDetails); 

Jetzt ist hier, was ich versuche zu tun, ich versuche, diese beiden Liste zu kombinieren, die gleiche Anzahl von Elementen enthält, in diesem Fall enthält beide Liste eine Nummer des Elements. Was ich bisher versucht ist:

 var result1 = lstFirst.Select(x => new CarFinal 
     { 
      Name = x.Name, 
      Model = x.Model 
     }).ToList(); 

     var result2 = lstSecond.Select(x => new CarFinal 
     { 
      Year = x.Year, 
      Description = x.Description 
     }).ToList(); 

     List<CarFinal> lstFinal = new List<CarFinal>(); 
     lstFinal = result1.Union(result2).ToList(); 

ich auch versucht:

 lstFinal = result1.Concat(result2).ToList(); 

Aber der Ausgang dieser beiden Verfahren werden beide produzieren zwei Elemente, was ich versuche nur zu vereinen alle Eigenschaften in ein. Ich erwarte nur eine Entität als Ergebnis, aber ich bekomme immer zwei Elemente in meiner Kombination.

+2

über Methoden lesen Sie bitte vor der Verwendung! –

Antwort

8

Verwenden Zip wie folgt aus:

var finalList = lstFirst.Zip(lstSecond, (c1, c2) => new CarFinal() 
     { 
      Name = c1.Name, 
      Model = c1.Model, 
      Description = c2.Description, 
      Year = c2.Year 
     }).ToList(); 
Verwandte Themen