以下のコードは、キーワードに一致するs
か、キーワードに一致するカテゴリに属する製品を検索しますs
。
それは機能していますが、面倒です。これを行うためのより短い方法があるかどうか疑問に思っていますか?
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
は多対多の関係であり、 aProduct
は 1 つ以上の に含めることができますCategory
。
Category1
の親カテゴリですCategory
。
データベースにリンクされているため、 などの機能を使用できないことに注意してくださいIsUnderCategory()
。
このコードは 1 回しか使用されないため、現時点では Expression は必要ありません。