微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在linq实体框架c#

如何解决如何在linq实体框架c#

我正在声明此变量以从数据库获取数据(示例)

var products = _context.Products();

我需要使用像这样的例子

if(ctId == -1)
{
    // get project list 
    var products = _context.Products().where(a => a.categoryId == 2);
}
else
{
    //get category list
    var products = _context.Products().where(a => a.categoryId == 1);
}

但是我的问题是如何声明var products 像这样使用

if(ctId == -1)
{
    // get project list 
    products = _context.Products().where(a => a.categoryId == 2);
}
else
{
    //get category list
    products = _context.Products().where(a => a.categoryId == 1);
}

解决方法

对于第一个问题,您将在IQueryable<Product>范围之外声明一个if

IQueryable<Product> products = null;

if(ctId == -1)
   products = _context.Products().where(a => a.categoryId == 2);
else
   products = _context.Products().where(a => a.categoryId == 1);

但是,您也可以使用ternary conditional operator

条件运算符?:,也称为三元条件运算符 运算符,计算一个布尔表达式并返回一个结果 两个表达式中的一个,具体取决于布尔表达式 计算为truefalse

条件运算符的语法如下:

condition ? consequent : alternative

示例

var id = ctId == -1 ? 2 : 1;
var products = _context.Products().where(a => a.categoryId == id);

或可能

var products = _context.Products().where(a => a.categoryId == (ctId == -1 ? 2 : 1));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。