Linq。包含选择EF并保留对象结构

时间:2015-10-12 14:45:32

标签: entity-framework linq asp.net-web-api linq-to-sql linq-to-objects

我有3个类A类,B类和C类,结构如下

public class A
{

  //other properties

  public List<B> Bs{get;set;}
  public List<C> Cs{get;set;}

}


public class B
{
  //other properties
  public List<C> Cs{get;set;}
}

public class C
{
  //properties
}

如您所见,C类嵌套在A和B中。

数据库中的数据存储在 Cs表格为

 Id | AId  | BId
 ---------------
 1  | 10    | NULL
 2  | 20    | NULL
 3  | 40    | 100

我想从A类中排除Bid = NULL但在B类中包含的ID。

这是我试过的

 var A=db.A
       .include(i=>i.B.Select(j=>j.C))
       .include(i=>i.C)
       .FirstOrDefault();

我按预期获得所有数据,但不能从A中排除Bid = Null的数据。请建议。

1 个答案:

答案 0 :(得分:0)

如果匿名结果没问题,您可以执行以下操作:

var A= from a in db.A
       select new {
           A = a,
           B = a.B,
           C = a.C.Where(c => c.BId != null)
       }.ToList();

其他类似的事情:

var A = db.A.Include(a => a.B).Single();
var children = db.C.Where(c => c.ParentID == parent.Id && c.BId != null);
foreach (var child in children) {
   A.C.Add(child);
}