簡體   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