即使列表为空,LINQ也会返回count

本文关键字:返回 count LINQ 列表 | 更新日期: 2023-09-27 18:08:29

我把这段代码放在另一个LINQ语句中。

 VideoLinks = (from video in m.VideoLinks.DefaultIfEmpty(new VideoGallery())
                                              orderby video.CreatedDate
                                              select new VideoGallery()
                                              {
                                                  Source = video.Source,
                                                  Type = video.Type,
                                                  Links = video.Links,
                                                  Title = video.Title
                                              }).ToList()

不幸的是,如果不使用DefaultIfEmpty,它通过我是一个异常。如果我使用DefaultIfEmpty,即使m.VideoLinks为空,我也会将videolinks计数为1。

那么现在如何避免计数1如果m.v ideollinks是null

即使列表为空,LINQ也会返回count

DefaultIfEmpty将给你一个默认值。当你对它调用ToList()时,它被视为一个项目…因此你的计数是1。

看起来您正在使用链接到对象,所以您应该添加一个where video != null

VideoLinks = (from video in m.VideoLinks
              where video != null
              orderby video.CreatedDate
              select new VideoGallery()
              {
                Source = video.Source,
                Type = video.Type,
                Links = video.Links,
                Title = video.Title
              }).ToList()

wllmsaccnt是正确的-您的问题是语句的"DefaultIfEmpty"部分。根据定义,根据此方法的定义,您请求集合中至少有一个项:

返回指定序列的元素或指定值在单例集合中如果序列为空

我认为这里重要的问题是,当你不使用DefaultIfEmpty时,你会收到什么异常?如果你告诉我们,也许我们可以帮你避免……