2017-10-09 1 views
-2

複数の条件を使用する最良の方法は何ですか? 現在、私はこのように書いています。何が最良の方法linq C#の条件を最適化する複数の場所を使用するか?

var v = _context.table1.Where(x => x.column1>= 0 && x.column1<= 10) 
    .Where(x => x.column2>= 0 && x.column2<= 10) 
    .Where(x => x.column3>= 0 && x.column3<= 10) 
    .Where(x => x.column4>= 0 && x.column4<= 10) 
    .Where(x => x.column5>= 0 && x.column5<= 10) 
    .Where(x => x.column6>= 0 && x.column6<= 10); 
+1

実際にここでの問題/質問は何ですか? –

+1

あり、このコードを使用して複数の問題をしていると、私は怖い、あなたの質問には、StackOverflowのために広すぎます。おそらく、あなたは[コードレビュー](https://codereview.stackexchange.com/)に良好な応答を得ることができますが、作るために 'db'、' table'、と 'MinifiedSiteEvent'の種類を明確にする必要がありますあなたの質問はそこで有効です。 –

+2

「ベスト」とはどういう意味ですか?私は、動的LINQクエリを使用して解決策を得た提案をいただきありがとうございますそれはあなたが – DiskJunky

答えて

0

オブジェクトに比較ロジックを移動できます。

void Main() 
{ 
    var list = new List<MinifiedSiteEvent>{ 
     new MinifiedSiteEvent{ A = 1, B = 1, C = 1, D = 1, E = 1, F = 1 }, 
     new MinifiedSiteEvent{ A = 2, B = 2, C = 2, D = 2, E = 2, F = 2 }, 
     new MinifiedSiteEvent{ A = 3, B = 3, C = 3, D = 3, E = 3, F = 3 }, 
    }; 

    var filter1 = 2; 
    var filter2 = 3; 

    var result = list.Where(x => x.IsInRange(filter1, filter2));  
} 

class MinifiedSiteEvent 
{ 
    public int A { get; set; } 
    public int B { get; set; } 
    public int C { get; set; } 
    public int D { get; set; } 
    public int E { get; set; } 
    public int F { get; set; } 

    public bool IsInRange(int item1, int item2) 
    { 
     return A >= item1 && A <= item2 
      && B >= item1 && B <= item2 
      && C >= item1 && C <= item2 
      && D >= item1 && D <= item2 
      && E >= item1 && E <= item2 
      && F >= item1 && F <= item2; 
    } 
} 
0

あなたの懸念は、あなただけの1「どこ」ステートメント内のすべての「場所」に参加することができ「」複数ある場合:

var v = _context.table1.Where(x => x.column1>= 0 && x.column1<= 10 
    && x.column2>= 0 && x.column2<= 10 
    && x.column3>= 0 && x.column3<= 10 
    && x.column4>= 0 && x.column4<= 10 
    && x.column5>= 0 && x.column5<= 10 
    && x.column6>= 0 && x.column6<= 10); 
+0

をやろうとしているものに依存します –

関連する問題