C# 实体框架。有限包含查询
我有一个对象C# 实体框架。有限包含查询,c#,linq,entity-framework,C#,Linq,Entity Framework,我有一个对象客户,与访问有一对多关系。 访问具有特定的访问类型 我只想在某个日期后获取访问量,这适用于我的所有客户。因此,我传递参数referenceDate 我能想到的Linq查询将为我提供所需的结果: customers.Include(c => c.Visits.Where(v => v.VisitDate >= referenceDate)).ToList(); 当然,这不起作用,因为Include实际上需要一个路径 这个问题是否有Linq替代方案,或者我是否应该为此
客户
,与访问
有一对多
关系。
访问具有特定的访问类型
我只想在某个日期后获取访问量
,这适用于我的所有客户
。因此,我传递参数referenceDate
我能想到的Linq查询将为我提供所需的结果:
customers.Include(c => c.Visits.Where(v => v.VisitDate >= referenceDate)).ToList();
当然,这不起作用,因为Include
实际上需要一个路径
这个问题是否有Linq替代方案,或者我是否应该为此编写自定义查询?也许您需要这样的东西:
customers.Include(c => c.Visits).Where(c => c.Visits.VisitDate >= referenceDate)).ToList();
或
客户。包括(“访问”)。其中(c=>c.Visits.VisitDate>=referenceDate)).ToList()代码>这可能是重复的,这不是一个好的解决方案。执行.Select(x=>x.b)时发生以下错误:符号类型“Devart.Common.Entity.ae”和当前表达式“Devart.Common.Entity.ae”的列添加失败。我的对象上有导致这些问题的其他属性。customers.Select(c=>new{c,Visits=c.Visits.Where(v=>v.VisitDate>=referenceDate)}.AsEnumerable().Select(a=>a.c).ToList()
这将排除没有访问的客户。啊,好的。。。像这样的?包括(c=>c.Visits)。其中(c=>c.Visits.VisitDate>=referenceDate | | c=>c.Visits==null | | c.Visits.Count==0)).ToList();我现在不在我的开发机器上,所以代码没有经过测试;)另外,我非常确定访问不必检查null和count=0。其中一个应该足够了…这仍然包括我所有的访问,这是对客户的筛选