繁体   English   中英

实体框架选择记录在联接表中不存在,或者字段为null

[英]entity framework select records do not exists in join table or field is null

我正在使用Entity Framework构建c# lambda

我有两个具有内部MarketOrder关系的表...( OrderMarketOrder )。 OrderIDOrder 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM