2017-10-09 94 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來說太寬泛了。可能你可以在[Code Review](https://codereview.stackexchange.com/)上得到更好的迴應,但是你需要澄清'db','table'和'MinifiedSiteEvent'的類型來製作你的問題在那裏有效。 –

+2

「最好」是什麼意思?這取決於你想要做什麼 – 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

如果您關注的是多「其中」,你可以只參加所有的「其中」一「其中」聲明:

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

謝謝你的建議我通過使用Dynamic Linq查詢得到了解決方案 –

相關問題