C# 如何在集合中检查null

C# 如何在集合中检查null,c#,linq,C#,Linq,集合中怎么可能有空值?迭代集合时,项为null 我使用的是linq,它抛出了异常。所以我做了一个双foreach。我怎样才能在linq登记 //var list=from?.SelectMany(x=>x.Media) //.Select(x=>newmedia{Height=x.Height,Href=x.Href,Width=x.Width}); //退货清单; 列表=新列表(); if(from==null)返回null; foreach(from中的var项目) { 如果(item.M

集合中怎么可能有空值?迭代集合时,项为null

我使用的是linq,它抛出了异常。所以我做了一个双foreach。我怎样才能在linq登记

//var list=from?.SelectMany(x=>x.Media)
//.Select(x=>newmedia{Height=x.Height,Href=x.Href,Width=x.Width});
//退货清单;
列表=新列表();
if(from==null)返回null;
foreach(from中的var项目)
{
如果(item.Media==null)返回null;
foreach(item.media中的var media)
{
添加(新媒体{Height=Media.Height,Href=Media.Href,Width=Media.Width});
}
}
退货清单;

您可以应用where子句来消除空项

from = from.Where(x => x != null);
如果您还想检查
媒体
属性的null控件

from = from.Where(x => x != null && x.Media != null);
另外,不要在循环中返回方法,通过
continue

if (item.Media == null) continue;

考虑这种方法:

var list = from?
    .SelectMany(x => x.Media)?
    .Where(z = z != null)?
    .Select(x => new Media { Height = x.Height, Href = x.Href, Width = x.Width })?
    .ToList();

如果来自的
,则
将确保代码正常工作。
Where
将删除任何单个
null
条目(这似乎是您的问题)。

在某个地方,必须将
null
添加到列表中。这是一个有效的操作。在填充
from
的位置调试代码。而不是
returnnull
write
continue因为您的代码当前执行的是中止所有操作,而不是跳过空值。@dlatikay谢谢。我将检查它被添加到何处并防止。好的,我将使用continue。谢谢。我将添加检查并使用continue
var list = from?
    .SelectMany(x => x.Media)?
    .Where(z = z != null)?
    .Select(x => new Media { Height = x.Height, Href = x.Href, Width = x.Width })?
    .ToList();