繁体   English   中英

使用内部联接时,抛出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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM