C#简写LINQ。所以声明

时间:2014-01-20 12:29:36

标签: c# linq

如何实现这一目标有点困惑。

我有网站和用户生成的类别,我想返回关联用户生成类别的项目(如果有一个是活动的)。所以如果选择了一个类别,但是如果类别为nu​​ll,那么我可以使用它,因为它没有对象来获取isActive属性。

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

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

由于

1 个答案:

答案 0 :(得分:7)

也许:

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));