LINQ Conditional Where Clauses not working

前端 未结 4 1916
不思量自难忘°
不思量自难忘° 2020-12-22 12:16

Using: MVC 5, C#, VS 2013, EF6 with CodeFirst, SQL Server 2012

I have tried the four different ways to get the data without any issues.

IQueryable&l         


        
4条回答
  •  [愿得一人]
    2020-12-22 12:59

    Instead of doing multiple where clauses like you code exhibits, you could try using a predicatebuilder ( ref http://blogs.msdn.com/b/meek/archive/2008/05/02/linq-to-entities-combining-predicates.aspx) to build the expression for your where clause based on different if statements and then use it on qryResults at the end.

    Here is an example of how you can use predicateBuilder

    void Main()
    {
        var myQuery = new List { 
            new Car {IsRed = true, IsConvertible = true },
            new Car {IsRed = true, IsConvertible = false },
            new Car {IsRed = false, IsConvertible = true },
            new Car {IsRed = false, IsConvertible = false }
        }.AsQueryable();
    
        Expression> isRed = c => c.IsRed;
        Expression> isConvertible = c => c.IsConvertible;
        var isRedConvertible = isRed.And(isConvertible);
    
        var redConvertible = myQuery.Where(isRedConvertible);
    }
    
    public class Car
    {
        public bool IsRed {get;set;}
        public bool IsConvertible {get;set;}
    }
    

提交回复
热议问题