【发布时间】:2016-05-14 12:02:35
【问题描述】:
我正在尝试实现这样的目标: 如果有匹配的 id 则根据它过滤结果,否则绕过条件
.Where(x => x.NeighbourhoodId == (id ?? x.NeighbourhoodId)
但我没有得到正确的多对多关系语法:
public JsonResult GetPost(int? id, int? tagid)
{
var ret = from data in db.Posts.Include(x => x.Tags)
.Include(x => x.Neighbourhood)
.OrderByDescending(x => x.PostedDate)
.Where(x => x.NeighbourhoodId == (id ?? x.NeighbourhoodId)
&& x.Tags.Any(t => t.TagId == tagid))
.ToList()
select new
{
TagName = string.Join(",", data.Tags.Select(t => t.TagName)),
Message = data.Message,
// and other related stuff
}
在这里,如您所见,这个 where 子句包含多个我要过滤帖子的条件。只有一个参数具有值。表示如果 id 参数有值,则 tagid 将为空,如果 tagid 为空,则 id 将有一些值。
现在,我想如果 tagid 中有空值,那么这个查询仍然应该运行。现在,它在数据库中不起作用,因为没有带有空 tagid 或 null 的帖子。如何做到这一点。有什么建议吗??
【问题讨论】:
-
请重新表述问题。当
id是null时会发生什么?当tagId是null?绕过相应的条件? -
@IvanStoev 我已经编辑了最后的问题,请看一下
标签: asp.net-mvc linq many-to-many null-coalescing-operator