2015-10-16 39 views
-4

說我有兩個模型/類。將類對象轉換爲另一個類對象,然後合併

public class Male 
{ 
    public int RunNumber { get; set; } 
    public string Notes { get; set; } 
    public DateTime thing {get ; set;} 
} 

public class Female 
{ 
    public int StopNumber { get; set; } 
    public string Notes { get; set; } 
    public DateTime? thing {get;set;} 
} 

我結合List<Male>List<Female>List<People>。每次看LINQ時,我的大腦都不配合我。我認爲這是連串的。

+2

在你的例子中,男性和女性都不是'People',所以你不能從男性和女性創建'List '。 – Servy

+0

如果您有一種方法可以將'List '和'List '都轉換爲'List ',那麼是的'Concat'會將這兩個結果列表合併爲一個新列表。 – juharr

+0

到目前爲止你累了什麼? – Arash

回答

0

假設你不想太花哨,並且有一個原因是男性有不同的成員(沒有雙關語意圖)並且沒有繼承公共父項,請創建一個數據傳輸對象並使用Select來映射進去。

public class Person 
    { 
     public int StopNumber { get; set; } 
     public string Notes { get; set; } 
     public DateTime? thing { get; set; } 
     public bool IsMale { get; set; } 
    } 

    public List<Person> Join(List<Male> males, List<Female> females) 
    { 
     return 
      males.Select(
       n => new Person() { 
        IsMale = true, 
        Notes = n.Notes, 
        StopNumber = n.RunNumber, 
        thing = n.thing} 
      ).Concat(
        females.Select(
         m => new Person() { 
           IsMale = false, 
           Notes = m.Notes, 
           StopNumber = m.StopNumber, 
           thing = m.thing}) 
       ).ToList(); 
    } 

但是,如果它們可以繼承一個普通的Person基類並且具有通用的成員名稱,那麼它會讓你的生活變得更加容易。