1
我有2個表,Category和ProductToCategory。在實體框架中使用「IN」
類別具有所有類別的名稱,而ProductToCategory具有分配給產品的所有類別的列表。它是分開的,因爲1個產品可以有多個類別。
我是新來的實體框架,並試圖獲得分配給特定產品的類別列表。我需要從類別表中返回信息,但ProductToCategory是我搜索的內容以獲取分配的內容。
我想要獲得所有類別的ID分配給ProductTOCategory表中的特定產品ID。
在SQL我會鍵入:
SELECT (Category Fields) FROM Category WHERE Category.Id
IN (SELECT ProductToCategory.CategoryId FROM ProductToCategory
WHERE ProductId = (THE PRODUCT ID))
或者類似的東西
這一切都取決於你的模型是如何定義的。通過正確定義的導航屬性,它應該像'Products.Find(10).Categories'一樣簡單。這可能最終會對數據庫進行2次調用,所以您可能需要執行如下操作:'Categories.Where(c => c.Products.Select(p => p.ProductId).Contains(10))' – MarcinJuraszek
首先你需要一個常量值的集合,然後使用'Where(x => list.Contains(x))'來產生'IN'子句。 –
知道SQL'x in(...)'轉換爲LINQ'(...)。包含(x)',你可以嘗試在LINQ中輸入你的SQL查詢。 –