Csharp/C#教程:两个条件检查where子句使用linq 2 entites分享


两个条件检查where子句使用linq 2 entites

嗨,我有一个名为带列的产品的表

product_id prodcut_name prodcut_price( values like 1200,2000,3000,100) prodcut_desc category_id(1,2,3,.....) 

带列的anorther表类别

  category_id(1,2,3.......) category_name(a,b,c....) 

和实体名称是dbcontext …

如何获得类别名称为“a”且产品价格> 500且<10000的产品

我正在使用linq来实现…

会不会对此有所帮助……一个……

非常感谢….

您正在寻找逻辑运算符,这些是您将在c#中使用的运算符:

所以伪代码中的复合条件看起来像:

 product_price > 500 AND product_price < 10000 

现在,如果您在DB中没有外键,那么当您创建上下文时,它只会有DBSets,并且它们不具有导航属性。 因此,您唯一的选择是使用Cubicle.Jockey的答案。

如果您在DB中有外键,您将在实体对象上拥有导航属性,您将能够执行以下操作:

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

或者,您可以直接使用LINQ扩展方法:

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

如果您需要列表或数组并且想要关闭dbcontext,则在query调用ToListToArray

 var products = query.ToList(); 

使用Entity Framework(EF)可以使用另一种方法 - 内置EntitySQL查询语言。 你将会有类似的表达方式:

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

其中ProductsQueryObjectQuery

 from p in dbcontext.products join c in dbcontext.category on p.category_id equals c.category_id where p.product_price > 500 && p.product_price < 10000 && c.Name == "a" select p 

这将返回带有过滤结果的IQueryable。

根据Vittore在下面的回答,如果存在外键约束,这将是更合适的版本:

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

加入category_id上的product和categories表,然后使用where筛选product_price

上述就是C#学习教程:两个条件检查where子句使用linq 2 entites分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1018363.html

(0)
上一篇 2022年1月3日
下一篇 2022年1月3日

精彩推荐