嵌套AND和OR查询DataContext

时间:2010-11-19 18:08:15

标签: c# linq

我不确定以下语法有什么问题。我想查询我的DataContext以获取以下数据:

向我展示FilesAccesses中没有任何内容,FileAccessGroups中没有任何内容。 同时向我展示在FilesAccesses中拥有我的用户ID的所有内容。

这是我尝试使用的语法。它失败了||在第三行的末尾说:“运营商'||'不能应用于'lambda expression'和'lambda expression'“

类型的操作数

我的语法错了吗?这些类型的查询必须是正确的吗?

return db.Files
  .Where(
    (f => !f.FilesAccesses.Any() && !f.FilesAccessGroups.Any()) ||
    (f => f.FilesAccesses.Any(a => a.UserId == user)))
  .OrderBy(f => f.ObjectType)
  .ThenBy(f => f.Name);

1 个答案:

答案 0 :(得分:3)

试试这个,你的语法确实是错误的。

return db.Files
  .Where(f =>
    (!f.FilesAccesses.Any() && !f.FilesAccessGroups.Any()) ||
    (f.FilesAccesses.Any(a => a.UserId == user)))
  .OrderBy(f => f.ObjectType)
  .ThenBy(f => f.Name);