【问题标题】:C# Shorthand LINQ .Where statementC# 速记 LINQ .Where 语句
【发布时间】:2014-01-20 12:29:36
【问题描述】:

只是有点困惑如何实现这一点。

我有网站和用户生成的类别,我想返回相关的用户生成的类别(如果有一个是活动的)。因此,如果选择了一个类别,我有这个可以正常工作,但如果该类别为空,它显然会失败,因为没有对象可以获取 isActive 属性。

var item = User.Items.Where(x => x.Categoires.FirstOrDefault(s => !s.isSystem).isActive)

所以我只需要检查第一个或默认值是否为空,非常感谢任何帮助。

谢谢

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    也许:

    var item = User.Items
       .Where(ui => ui.Categoires.Any(uic => !uic.isSystem && uic.isActive));
    

    这将返回具有至少一个活动非系统类别的用户项。

    类别是项目的可选字段,类别的状态为 isActive,所以如果项目有一个它没有的关联类别 必须,那么该类别必须处于活动状态。

    然后你必须包含没有类别的项目(我假设它不能为空):

    var item = User.Items
       .Where(ui => !ui.Categoires.Any() || ui.Categoires.Any(uic => !uic.isSystem && uic.isActive));
    

    【讨论】:

    • 出色的答案,但不是我所追求的,如果它没有类别,我想要该项目,但如果它确实有相关类别,则相关类别必须处于活动状态,如果我的问题不清楚,请见谅
    • 抱歉,还是不清楚:“如果它没有类别,但如果它有关联的类别,那么关联的类别必须是活动的”矛盾?怎么可能两者都有,根本没有类别,还有一个活跃的类别?
    • 是的,类别是项目的可选字段,并且类别的状态为 isActive,因此如果项目具有不需要的关联类别,则该类别必须处于活动状态。跨度>
    • @PhilJenkins:看看我编辑的答案。也许这就是你要找的。​​span>
    猜你喜欢
    • 2017-11-19
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多