two conditions checking in where clause using linq 2 entites

后端 未结 3 1269
春和景丽
春和景丽 2021-02-05 15:59

hi i have table called products with columns

                 product_id
                 prodcut_name
                 prodcut_price( values like 1200,2000,3000         


        
3条回答
  •  不要未来只要你来
    2021-02-05 16:47

    You are looking for logic operators, and these are the ones you are going to use in c#:

    • && logical AND
    • || logical OR
    • ! logical NOT
    • ^ logical (bitwise) XOR
    • COND ? TRUE-STATEMENT : FALSE-STATEMENT ternary operator

    So your composite condition in pseudo code going to look like:

    product_price > 500 AND product_price < 10000
    

    Now, if you have no foreign key in DB, when you've created your context it only going to have DBSets, and they are not going to have navigation properties. So your only option is to use Cubicle.Jockey's answer.

    If you have foreign keys in DB, you will have navigation properties on your entity objects and you will be able to do the following:

    var query = from p in dbcontext.products
    where p.category.name == 'a' 
       && p.product_price > 500 
       && p.product_price < 10000
    select p;
    

    Alternatively you can use LINQ extension methods directly:

      var query = dbcontext.Products.Where(p => p.category.name == 'a' 
                                             && p.product_price > 500 
                                             && p.product_price < 10000);
    

    If you need a list or array and want close dbcontext you are calling either ToList or ToArray on query:

    var products = query.ToList();
    

    There is alternative way of doing it with Entity Framework (EF) - build-in EntitySQL query language. You are going to have similar expression with it:

    var query = ProductsQuery.Where("it.Category.Name == 'a' AND it.Product_Price BETWEEN 500 AND 10000");
    

    where ProductsQuery is ObjectQuery.

提交回复
热议问题