C# 即使列表为空,LINQ也返回count
我在另一个LINQ语句中有这段代码C# 即使列表为空,LINQ也返回count,c#,.net,linq,linq-to-sql,C#,.net,Linq,Linq To Sql,我在另一个LINQ语句中有这段代码 VideoLinks = (from video in m.VideoLinks.DefaultIfEmpty(new VideoGallery()) orderby video.CreatedDate select new VideoGallery()
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
那么,如果m.VideoLinks为null,那么如何避免得到计数1呢。当您对其调用ToList()时,它将计为一个项目…因此您的计数为1。这看起来您正在使用linq to对象,因此您应该在where video!=空
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时,您会收到什么异常?如果您告诉我们,也许我们可以帮助您避免…我的问题是如何避免?不要使用DefaultIfEmpty,就是这样。在我回答后您更改了您的问题?那不酷。呵呵,没问题。通常,如果你需要一个新问题,你应该重新措辞,只包含你需要知道的内容,但在这种情况下,你很难重新措辞,因为你想把它放在上下文中。我想你没有一个干净的方法来把它变成一个新问题。太好了。从来没有想过条件在哪里。你收到的例外是什么?我不明白投票失败的原因。我的问题不是关于异常或如何解决异常,而是关于计数以及如何使其为零。例外情况是对象引用并没有设置为对象的实例,Praneth,我并没有否决它。不知道原因。