下面的代碼搜索匹配關鍵字s
或處於與關鍵字s
匹配的類別下的產品。LINQ:選擇一個類別下的產品,包括子類別
這是工作但繁瑣,我想知道是否有一個更短的方法來做到這一點?
var products = context.Products.Where(x =>
x.Name.Contains(s) ||
x.Products_Categories.Any(pc =>
pc.Category.Name.Contains(s) ||
(pc.Category.Category1 != null && pc.Category.Category1.Name.Contains(s)) ||
(pc.Category.Category1 != null && pc.Category.Category1.Category1 != null && pc.Category.Category1.Category1.Name.Contains(s) ||
(pc.Category.Category1 != null && pc.Category.Category1.Category1 != null pc.Category.Category1.Category1.Category1 != null && &&pc.Category.Category1.Category1.Category1.Name.Contains(s))
);
如果這不是明擺着:
Products_Categories
是許多一對多的關係,一個Product
可以在一個或多個Category
。
Category1
是Category
的父類別。
請注意,它鏈接到數據庫,所以我不能使用像IsUnderCategory()
這樣的函數。
我現在不需要表達式,因爲這段代碼只用了一次。
看起來應該在數據庫中創建一個View來獲取有關類別(使用公共表表達式)的分層數據並使用該View進行查詢,而不是'Category'表本身。 – MarcinJuraszek 2013-04-04 05:50:02