首页 > 解决方案 > 如何在 IEnumerable 中验证收益返回默认值?

问题描述

我正在尝试检查是否IEnumerable<>为空或为空,但不知何故,只要它为空,我的 if 检查总是失败。

    private bool Update()
    {
        IEnumerable<RecordHolder> recordHolders = GetData();
        // below  check doesn't work
        if (recordHolders == null || !recordHolders.Any())
            return false;

        // .. some other code
    }

    public IEnumerable<RecordHolder> GetData()
    {
        var isSuccess = PullRemote(url);
        if (!isSuccess.Result) { yield return default; }

        // .. some other code
    }

每当我的GetData()方法返回时yield return default,随后的if签入Update方法就不起作用。我做错了什么吗?

我以为我的 if 签入Update方法将能够捕获yield return default但我错了。

标签: c#asp.netienumerable

解决方案


我认为您正在寻找yield break而不是yield return default. 或者,您可以在常规方法(不是迭代器块)中执行操作的第一部分,并在特殊情况下返回失败情况(Array.Empty<T>()是常见的选择),推迟到迭代器块(或Select投影)成功案例。


推荐阅读