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

我具有由网站和用户生成的类别,并且如果有一个事件的类别,我想返回相关的用户生成类别的项目。因此,如果选择了类别,则可以正常工作,但如果类别为nu​​ll,则显然会失败,因为没有对象可以获取isActive属性。

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

因此,我只需要检查first或default是否为null,将不胜感激。

谢谢

最佳答案

也许:

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

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



然后,您必须包括不带类别的项目(我假设它不能为null):
var item = User.Items
   .Where(ui => !ui.Categoires.Any() || ui.Categoires.Any(uic => !uic.isSystem && uic.isActive));

关于C#速记LINQ。where语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21234163/

10-10 19:02