linq - 转义空值 LINQ
问题描述
我对这个 linq 表达式有疑问:
var invs = ids.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries)
.Select(x => sitecoreContext.GetItem<Inv>(new ID(x).Guid))
.ToList();
如何在 .Select 中检查 null?SitecoreContext.GetItem(new ID(x).Guid)) 崩溃(因为项目未发布,或创建但未发布)所以我需要一种方法来首先验证项目是否存在,然后才能进行选择。
谢谢你。
解决方案
where
您可以使用语句过滤所有非空项目。
var nonNull = list.Where(element => element != null);
我通常为此使用扩展方法:
public static class EnumerableExtensions
{
public static IEnumerable<T> WhereNotNull<T>(this IEnumerable<T> enumerable)
where T: class
{
return enumerable.Where(element => element != null);
}
}
鉴于您的示例,您可以使用如下语句:
var invs = ids.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries)
.WhereNotNull()
.Select(x => sitecoreContext.GetItem<Inv>(new ID(x).Guid))
.ToList();
推荐阅读
- javascript - 这些类型的解构有什么区别
- c# - 在 C# 中创建 PowerShell Cmdlet - 管道链接
- html - Bootstrap 4使元素在sticky-top类中垂直居中
- node.js - 如何将 firebase Cloud 函数样板添加到现有的 firebase Web 项目?
- javascript - 添加两个文本框包含并在另一个文本框中显示结果,没有使用 html 和 javascript 的任何按钮
- html - 将数据放入 Golang 下拉列表
- ruby - 单例与类变量。有什么区别和选择什么?
- java - 从java中的POST读取json文件
- javascript - 如何在所有工作表上运行脚本,谷歌表格
- c - 无法打印带有缩进的二叉树