entity-framework - 在带有条件的关系数据中,包括

  显示原文与译文双语对照的内容
0 0

我有这个实体:


public class A 
{
 public List<B> B { get;set; }
}

public class B 
{
 public DateTime Date { get; set; }
 public List<C> C { get; set; }
}

public class C { }

我需要从 B.Date> DateTime.Now. 中得到C 。 我在尝试这样的事情:


var users = _db.A
.Select(a => new
{
 A = a,
 B = a.B
. Where(b => b.Date> = DateTime.Now).Select(p => new
 {
 B = b,
 C = b.C
 })
})
.AsEnumerable()
.Select(a => a.A)
.ToList();

但C 始终为空。 我怎样才能得到C?


更新

如果我在'列表C'中设置虚拟,它 ! 如何在不设置虚拟设置的情况下进行这项工作?

时间: 原作者:

0 0

你可以尝试手动构建对象图。 以下将仅运行一个数据库查询( 当第一个foreach循环执行时,剩下的在内存中执行):


var userQuery = _db.A
. Select(a => new
 {
 A = a,
 B = a.B.Where(b => b.Date> = DateTime.Now).Select(p => new
 {
 B = b,
 C = b.C
 })
 });

var users = new List<A>();
foreach (var u in userQuery)
{
 A a = u.A;
 a.B = new List<B>();
 foreach (var x in u.B)
 {
 B b = x.B;
 b.C = x.C;
 a.B.Add(b);
 }
 users.Add(a);
}

原作者:
...