English 中文(简体)
如果在IEC中没有任何内容可计算(Of T) - Linq要素和验证操作员
原标题:
  • 时间:2009-05-28 04:08:59
  •  标签:

职责

IEnumerable<CallbackListRecord> LoadOpenListToProcess(CallbackSearchParams usp);

在序列中没有内容时,这一行文错误(因为它应当)

CallbackListRecord nextRecord = CallbackSearch.LoadOpenListToProcess(p).First();

我已改为:

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

是否有更好、更方便或更可取的方法来确定电子计算序列是否没有任何内容?

最佳回答

您应尽量避免列举这种数据比必要多(即使有短路,如<条码>第1和<条码>Any)。

var nextRecord = CallbackSearch.LoadOpenListToProcess(p).FirstOrDefault();
if(nextRecord != null) {
    // process it...
}

这与班级相当好(因为你只能比较提及无效)。

问题回答

你们可以将法典缩短到以下几个方面:

var nextrecord = CallbackSearch.LoadOpenListToProcess(p).FirstOrDefault();

如果收集工作是空的,则下一个记录要么包含第一个要素,要么是完全无效。

如果你预见到按顺序可能有无效的数值,你可以处理点名。

var enumerator = CallbackSearch.LoadOpenListToProcess(p).GetEnumerator();
if (enumerator.MoveNext()) {
  var item = enumerator.Current;
  ...
}

您可以添加这样的推广方法:

public static class Extensions
{
    public static bool HasElements<T>(this IEnumerable<T> collection)
    {
        foreach (T t in collection)
            return true;

        return false;
    }
}




相关问题
热门标签