linq查询包括但否定所有者

时间:2015-12-24 23:26:19

标签: c# asp.net-mvc entity-framework linq

我有一个看起来像这样的linq查询:

IQueryable<Incident> listUnpaged = db.Incidents.OrderByDescending(d => d.IncidentDate);
listUnpaged = listUnpaged.Where(s => s.User.UserName == user);
listUnpaged = listUnpaged.Where(s => !s.PostPrivate);

这是一个查询,用于显示特定用户的事件,如果标记为私有,则不显示。 PostPrivate允许用户定义事件是否是私有的,因此如果事件是私有的,则不会在事件的主列表中显示它。这很有效。

但是,如果请求的人是所有者,它也不会显示事件。所以,对于最后一行,我需要做类似的事情:

listUnpaged.Where(s => !s.PostPrivate //but only where the requestor (userId) is not the owner of the incident (s.UserId))

希望这有意义吗?

我试过了:

listUnpaged.Where(s => !s.PostPrivate).Where(t => s.UserId != userId);

但是,这没有结果。

我还在考虑简单地使用if语句来否定该行,以确定userId是否为所有者,但在查询运行之前我不知道s.UserId

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

如何在一个地方使用它们?

listUnpaged = listUnpaged
    .Where(s => s.User.UserName == user || !s.PostPrivate);