如果源不为空,以下语句可以正常工作:
Filters.Selection
.Select(o => new GetInputItem() { ItemID = o.ItemId })
如果“Filters.Selection”为空(显然),它就会爆炸。有没有可能的方法来编写我自己的扩展方法,如果源为空,则返回 null,或者如果源不为空,则执行“Select”函数。
比如说,如下所示:
var s = Filters.Selection
.MyOwnSelect(o => new GetInputItem() { ItemID = o.ItemId })
如果“Filters.Selection”为 null,则“s”将为 null,否则“s”将包含使用 LINQ Select 计算的“func”。
这只是为了了解有关 LINQ 扩展/自定义的更多信息。
谢谢。
最佳答案
你可以这样做:
public static IEnumerable<U> SelectOrNull<T,U>(this IEnumerable<T> seq, Func<T,U> map)
{
if (seq == null)
return Enumerable.Empty<U>(); // Or return null, though this will play nicely with other operations
return seq.Select(map);
}
关于linq - 如何以我自己的方式扩展 LINQ select 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14882176/