我要根据表1中选择的每一行的ID从sql数据库表1中选择一组数据,我包括表2中具有相同ID的所有行,对于我只想选择的那些行表2中的行(其中表列(移动)的值为1
这是与实体框架相关的,这是下面的查询
List<Event> queryEvents;
using (var context = new Entities())
{
queryEvents = context.Events.Where(s => s.IsActive == (byte?) RecordTypeEnum.Active)
.Include(s => s.EventOwner).Include(x => x.EventTickets.Any(y => y.AvailableInventory >= 1))
.Where(g => g.IsActive != null && g.EventOwner.IsActive == true)
.OrderByDescending(h => h.EventOwnerId).ThenBy(j => j.Title).ToList();
}
错误消息-
包含路径表达式必须引用在类型上定义的导航属性。使用虚线路径作为参考导航属性,使用“选择”运算符作为集合导航属性。 参数名称:路径
我想从table1中选择IsActive(列)== 1的所有记录,并从table2中选择table1 id = table2 id并在表2中AvailableInventory(列)== 1的所有记录
答案 0 :(得分:0)
不支持条件包含。但是您可以通过以下代码实现您的目标;
queryEvents = context.Events.Where(s => s.IsActive == (byte?) RecordTypeEnum.Active)
.Include(s => s.EventOwner)
.Select(e => new{
e,
EventTicklets = e.EventTickets.Where(y => y.AvailableInventory >= 1 ).ToList()
})
.Where(g => g.e.IsActive != null && g.e.EventOwner.IsActive == true)
答案 1 :(得分:0)
我无法在单个查询中解决问题,所以我使用了两个查询
queryEvents = context.Events.Where(s => s.IsActive == (byte?)RecordTypeEnum.Active)
.Include(s => s.EventOwner).Include(x => x.EventTickets)
.Where(g => g.IsActive == (byte)RecordTypeEnum.Active && g.EventOwner.IsActive == true)
.OrderByDescending(h => h.EventOwnerId).ThenBy(j => j.Title);
queryEvents = queryEvents.Select(o =>
{
o.EventTickets = o.EventTickets.Where(f => f.AvailableInventory > 0 && f.Amount != zero ).ToList();
return o;
}).ToList();
在第一个查询中,我选择了所有事件并包括了票证表,然后在第二个查询中,我选择了所有事件,其中票证对象中的字段满足指定条件