我試圖用WHERE語句從E.F查詢得到ItemsEntity獲得ID列表中進行選擇。該條件從另一個返回多於1個item_id的E.F查詢中獲取item_id。
var item_id = (from n in db.OrderDetail where n.OrderId == id select n.item_id);
var itemEntity = (from m in db.ItemsEntity where *m.item_id==item_id* select m);
我試圖用WHERE語句從E.F查詢得到ItemsEntity獲得ID列表中進行選擇。該條件從另一個返回多於1個item_id的E.F查詢中獲取item_id。
var item_id = (from n in db.OrderDetail where n.OrderId == id select n.item_id);
var itemEntity = (from m in db.ItemsEntity where *m.item_id==item_id* select m);
您可以使用Contains
方法時要使用一個集合在Where
條款
var listOfIds = (from n in db.OrderDetail where n.OrderId == id select n.item_id);
var itemEntity = (from m in db.ItemsEntity where listOfIds.Contains(m.item_id) select m);
記住的是,與上面的代碼,itemEntity
變量將是集合。如果您想要單個項目,請根據需要使用像FirstOrDefault()
或First()
這樣的方法。
上面的代碼可以被寫成一個LINQ方法鏈如下面以及
var listOfIds = db.OrderDetail.Where(n=>n.OrderId == id).Select(x=>x.item_id);
var itemEntity = db.ItemsEntity.Where(m=>listOfIds.Contains(m.item_id));
我需要所有找到的item_id分別用於獲取項目,儘管item_ids的數量爲 –
謝謝。有用。 –
使用首先()或FirstOrDefault()在第一個語句的末尾使ITEM_ID變量的實際的int類型,而不是IQueriable,因爲它是現在。
OrderDetail是否與ItemsEntity相關?如果是這樣,這是一個非常簡單的單個查詢使用導航屬性。 –