[英]entity framework select records do not exists in join table or field is null
我正在使用Entity Framework
构建c# lambda
我有两个具有内部MarketOrder
关系的表...( Order
和MarketOrder
)。 OrderID
是Order Table
上的PK和市场Order Table
的FK MarketOrder Table.
恢复我的模型是这样的
public class Order { [Key] public int OrderID { get; set; } public virtual MarketOrder MarketOrders { get; set; } } public class MarketOrder { [Key] public int MarketOrderID { get; set; } // One sequence for all system market orders. public int OrderID { get; set; } public virtual Order Order { get; set; } }
我需要选择MarketOrder.Status is null
表中不存在的记录,或者存在具有字段MarketOrder.Status is null
我尝这个
db.Order
.Where(c => !db.MarketOrder
.Select(b => b.OrderID)
.Contains(c.OrderID)
);
当其他表中不存在该文件时,我可以正常工作,但如果Status == null时存在该表,我将无法使用它。
关系是一对多的。 在订单类中,我有财产
public virtual List<MarketOrder> MarketOrders { get; set; }
var aa =(from order in db.OrderFunds
from marketOrder in order.MarketOrders.DefaultIfEmpty()
where marketOrder.OrderID == null || marketOrder.Status == null).ToList();
它工作正常。
当关系是One To One
时,我有问题。 在订单类中,我具有属性
public virtual MarketOrder MarketOrders { get; set; }
线
order.MarketOrders.DefaultIfEmpty()
不起作用。 order.MarketOrders
没有方法DefaultIfEmpty()
。 如果我使用order.MarketOrders.ToString().DefaultIfEmpty()
子句where marketOrder.OrderID
不具有属性OrderID
我该如何解决。
谢谢。
db.Order.Where(o => o.MarketOrder?.Status == null)
如同
db.Order.Where(o => o.MarketOrder == null || o.MarketOrder.Status == null)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.