2

以下のコードは、キーワードに一致する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 は必要ありません。

4

2 に答える 2