将类对象转换为另一个类对象然后合并

时间:2015-10-16 19:31:08

标签: c# linq

假设我有两个模型/类。

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<People>List<Male>List<Female>。每当我看LINQ,我的大脑都不会与我合作。我认为它已经结束了。

1 个答案:

答案 0 :(得分:0)

假设你不想过于花哨,那么有一个原因是男性和女性。女性有不同的成员(没有双关语),不继承共同的父母,创建数据传输对象,并使用选择映射到它。

    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基类并拥有通用的成员名称,它将使您的生活变得更加容易。