我有下一个数据库模型:
我要接收按类别选择的帖子列表。我回顾了按类别列出的程序列表,如下所示:
var pre_request = from el in db.programs
where el.program_categories.Any(n => n.categories.slug_name == categ)
select el.id;
var programCat = pre_request.ToList();
它正常工作。为了接收帖子列表,我使用INNER JOIN
如下:
var request = (from c in db.posts
join c2 in programCat on c.program_id equals c2
orderby c.id descending
select new ListItem
{
Name = c.name,
Id = c.id,
Poster = c.images.FirstOrDefault(n => n.type == "post").href,
}).Skip(0).Take(1);
List<ListItem> content = request.ToList();
启动此应用程序时,它在行
上返回NullReferenceException
List<ListItem> content = request.ToList();
为什么返回NullReferenceException
?如何接收按类别选择的帖子列表?
答案 0 :(得分:0)
您的错误在一行中:
Poster = c.images.FirstOrDefault(n => n.type == "post").href,
您使用FirstOrDefault
代替了First
,因为您认为:“何时,可能没有这样的图像,在这种情况下,请使用null”。如果返回null,则当然无法获得.href
。
使用LINQ时,最好使IQueryable / IEnumerable保持尽可能长的时间。实际上,只有最后一条语句才能将您的内容具体化为一个列表/字典/一个对象:
Poster = c.images.Where(image => image.type == "post")
.Select(image => image.href)
.FirstOrDefault(),