[英]Left Outer Join using DefaultIfEmpty throws NullReferenceException
[英]When using inner join throws NullReferenceException
我有下一个数据库模型:
我希望将收到按类别选择的帖子列表。 我回顾了按类别列出的程序列表,如下所示:
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
? 如何接收按类别选择的帖子列表?
您的错误所在的行:
Poster = c.images.FirstOrDefault(n => n.type == "post").href,
您使用FirstOrDefault
而不是First
,因为您认为:“何时,可能没有这样的图像,在这种情况下,让我们使用null”。 如果返回null,那么您当然无法获得.href
。
使用LINQ时,最好使IQueryable / IEnumerable保持尽可能长的时间。 实际上,只有最后一条语句可以将您的内容具体化为一个List / Dictionary /一个对象:
Poster = c.images.Where(image => image.type == "post")
.Select(image => image.href)
.FirstOrDefault(),
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.