将列表连接到子类并列出<subclass>

时间:2015-11-24 14:16:45

标签: c# linq join subclass

我的课程:

public abstract class BaseModel
{
    public virtual Int32 Id { get; set; }
}

public class ClassA : BaseModel
{
    public Int32 field1 { get; set; }
    public Int32 field2 { get; set; }

    public ClassB NameB { get; set; }
    public List<ClassC> NameC { get; set; }
}

public class ClassB : BaseModel
{
    public string field1 { get; set; }
    ...
}   

public class ClassC : BaseModel
{
    public string field1 { get; set; }
    ...
}

然后我有:

List<ClassA> listA = getAllClassA(); //with null values for ClassB and ClassC List<ClassB> listB = getAllClassB(); List<ClassC> listC = getAllClassC();

如何使用LINQ在“A”列表中使用BaseModel ID作为联合参数加入列表“b”和“c”?

我知道有一种方法可以使用foreach来做到这一点,但我不知道这是否是最好的方式......

EX:使用foreach

foreach (var item in listA)
{
    item.NameB = ListB.Where(w => w.Id == item.Id).FirstOrDefault();
    foreach (var c in ListC.Where(w => w.ID == item.ID)
    {
        item.NameC.Add(c);
}

1 个答案:

答案 0 :(得分:0)

试试这个

修改

foreach (var item in listA)
{
    item.NameB = ListB.Where(w => w.Id == item.Id).FirstOrDefault();        
    item.NameC = ListC.Where(w => w.ID == item.ID).ToList();
}