代码之家  ›  专栏  ›  技术社区  ›  jella shyam

在linq c中使用多个where条件的最佳方法是什么?或者如何优化?

  •  -2
  • jella shyam  · 技术社区  · 7 年前

    使用多个where条件的最佳方式是什么? 目前,我是这样写的。

    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);
    
    2 回复  |  直到 7 年前
        1
  •  0
  •   Greg    7 年前

    您可以将比较逻辑移动到对象中。

    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;
        }
    }
    
        2
  •  0
  •   hsoesanto    7 年前

    如果您关心的是多个“where”,您可以将所有“where”加入到一个“where”语句中:

    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);