如何防止Lambda LINQ表达式添加空值

Ahm*_*aba -1 c# linq lambda

我正在使用迭代列表的LINQ表达式执行查询,如下所示:

feedVideos.Add(vid.Where(f => f.UserName == friend.Friend_UserName).FirstOrDefault());
Run Code Online (Sandbox Code Playgroud)

如果没有任何对象,则此表达式将空值添加到列表中.我不知道这是不是正常的行为,但是如何在列表中没有任何对象时添加任何内容?

Ser*_*rvy 9

而不是使用FirstOrDefault获取可能为null的值,只需使用Take将序列限制为一个项目,留下一个大小为零或一的序列,您可以将其添加到列表中:

feedVideos.AddRange(vid.Where(f => f.UserName == friend.Friend_UserName).Take(1));
Run Code Online (Sandbox Code Playgroud)


oct*_*ccl 7

使用简单if:

var result=vid.FirstOrDefault(f => f.UserName == friend.Friend_UserName);
if(result!=null)
{
 feedVideos.Add(result);
}
Run Code Online (Sandbox Code Playgroud)

如果您的列表没有值,那么FirstOrDefault将返回null,所以,是的,这是正常行为.