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

时间:2017-10-09 11:33:24

标签: c# linq-to-sql

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

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 个答案:

答案 0 :(得分: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;
    }
}

答案 1 :(得分:0)

如果您的关注点是多个&#39;其中&#39;,您可以加入所有&#39;其中&#39;在一个地方&#39;语句:

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