[英]entity framework select records do not exists in join table or field is null
I am building an c# lambda
with Entity Framework
我正在使用Entity Framework
构建c# lambda
I have two tables with inner join relationship...( Order
and MarketOrder
). 我有两个具有内部MarketOrder
关系的表...( Order
和MarketOrder
)。 OrderID
is the PK on Order Table
and the FK on MarketOrder Table.
OrderID
是Order Table
上的PK和市场Order Table
的FK MarketOrder Table.
Resuming my Model is like this 恢复我的模型是这样的
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; } }
I need to select records do not exists in join table or is exists having field MarketOrder.Status is null
我需要选择MarketOrder.Status is null
表中不存在的记录,或者存在具有字段MarketOrder.Status is null
I taste this 我尝这个
db.Order
.Where(c => !db.MarketOrder
.Select(b => b.OrderID)
.Contains(c.OrderID)
);
I works fine when do not exists in other table but I can not use it in case it exists with Status == null. 当其他表中不存在该文件时,我可以正常工作,但如果Status == null时存在该表,我将无法使用它。
Whe the relationship is One to Many. 关系是一对多的。 In Order class I have the property 在订单类中,我有财产
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();
it Works fine. 它工作正常。
I have the problem when the relationship is One To One
. 当关系是One To One
时,我有问题。 In Order Class I have the property 在订单类中,我具有属性
public virtual MarketOrder MarketOrders { get; set; }
the line 线
order.MarketOrders.DefaultIfEmpty()
Does not work. 不起作用。 order.MarketOrders
do not have the method DefaultIfEmpty()
. order.MarketOrders
没有方法DefaultIfEmpty()
。 If I use order.MarketOrders.ToString().DefaultIfEmpty()
The clause where marketOrder.OrderID
do not have property OrderID
如果我使用order.MarketOrders.ToString().DefaultIfEmpty()
子句where marketOrder.OrderID
不具有属性OrderID
How can I solved it. 我该如何解决。
Thanks. 谢谢。
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.