2015-10-16 70 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基类并且具有通用的成员名称,那么它会让你的生活变得更加容易。

相关问题