加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Linq的FirstOrDefault

发布时间:2020-12-15 19:45:41 所属栏目:百科 来源:网络整理
导读:我试图将这个foreach循环移动到 linq: compData = componentData[0];foreach (var componentTraceData in componentData){ if (!string.IsNullOrEmpty(componentTraceData.CompName)) { compData = componentTraceData; break; }} 这就是我试过的: var tt
我试图将这个foreach循环移动到 linq:

compData = componentData[0];
foreach (var componentTraceData in componentData)
{
     if (!string.IsNullOrEmpty(componentTraceData.CompName))
     {
          compData = componentTraceData;
          break;
     }
}

这就是我试过的:

var tt = (from n in componentData 
          where !string.IsNullOrEmpty(n.CompName) 
          select n).FirstOrDefault();

如果linq没有找到任何结果,我怎么能让它采取componentData [0]?

解决方法

您可以使用 Enumerable.DefaultIfEmpty并指定自定义默认值:

var result = componentData.Where(n => !string.IsNullOrEmpty(n.CompName))
                          .DefaultIfEmpty(componentData.ElementAtOrDefault(0))
                          .First();

请注意,您现在可以安全地使用First,因为序列不能再为空.如果源序列为空,则ElementAtOrDefault将返回默认值(T)(对于引用类型为null).当您使用IList< T>的索引器时,这将防止异常.直.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读