检查IEnumerable(Of T)中是否没有元素 - Linq元素和量词运算符

CRi*_*ice 4 c# linq ienumerable element

对于我的功能

IEnumerable<CallbackListRecord> LoadOpenListToProcess(CallbackSearchParams usp);
Run Code Online (Sandbox Code Playgroud)

当序列不包含任何元素时,此行会出错(应该如此)

CallbackListRecord nextRecord = CallbackSearch.LoadOpenListToProcess(p).First();
Run Code Online (Sandbox Code Playgroud)

我已将其更改为以下内容

CallbackListRecord nextRecord = null;
IEnumerable<CallbackListRecord> nextRecords = CallbackSearch.LoadOpenListToProcess(p);
if (nextRecords.Any())
{
    nextRecord = nextRecords.First();
}
Run Code Online (Sandbox Code Playgroud)

是否有更好,更简单或更优雅的方法来确定IEnumerable序列是否没有元素?

Mar*_*ell 6

你应该尽量避免枚举它超过必要的次数(即使短路,比如FirstAny) - 如何:

var nextRecord = CallbackSearch.LoadOpenListToProcess(p).FirstOrDefault();
if(nextRecord != null) {
    // process it...
}
Run Code Online (Sandbox Code Playgroud)

这适用于类(因为您可以只将引用与null进行比较).