为了账号安全,请及时绑定邮箱和手机立即绑定

特定情况下 Linq 查询中的条件 Where 子句

特定情况下 Linq 查询中的条件 Where 子句

C#
九州编程 2021-08-22 14:49:52
我有一个实体框架查询,它根据特定条件从数据库中检索结果。但是,有一个实例,我想根据 where 子句中的条件过滤结果。我认为案例陈述是我如何实现这一目标,有人能指出我正确的方向吗?因此,对于从 OutageList 返回的结果,对于中断类型为“Live”的情况,如果 NumberOfPeopleAffected 大于 4,我只希望将其包含在结果中。例如: outageList.Where(o => o.FaultType == "Live" && o.NumberOfPeopleAffected > 4)问题是,上面的代码是不够的,因为我也想返回其他中断,只是对于Live中断的情况,如果受影响的人数超过4,我只想返回它们。这有意义吗?这是我需要的案例陈述吗?如果是这样,在 LINQ 中编写它的最佳方法是什么?
查看完整描述

3 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

您可以在Where()子句中包含 OR 条件:

outageList.Where(o => (o.FaultType == "Live" && o.NumberOfPeopleAffected > 4) || o.FaultType != "Live");



查看完整回答
反对 回复 2021-08-22
?
忽然笑

TA贡献1806条经验 获得超5个赞

使用这个查询:

 outageList.Where(o => (o.FaultType == "Live" && o.NumberOfPeopleAffected > 4) || o.FaultType != "Live")


查看完整回答
反对 回复 2021-08-22
?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

要在 linq 中执行您想要的操作,请在下面使用。


var faultList = new[] {"Live", "SomethingElse"};


outageList.Where(o => faultList.Contains(o.FaultType) && o.NumberOfPeopleAffected > (o.FaultType == "Live" ? 4 : 0));

老实说,我可以使用此声明,但我意识到它可能难以阅读。


查看完整回答
反对 回复 2021-08-22
  • 3 回答
  • 0 关注
  • 159 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信