语法:yield return ienumerable without loop

时间:2014-08-07 21:03:56

标签: c# syntax

有可能吗?

List<Cat> _Cats; // created somewhere else

public IEnumerable<Cat> LeadWithLolCat()
{
    yield return RandomLolCat();

    // can we return all the other cats without creating a loop?
    foreach ( var cat in _Cats ) // -> so not like this
        yield return cat;
}

2 个答案:

答案 0 :(得分:3)

您可以尝试使用Concat,如下所示:

public IEnumerable<Cat> LeadWithLolCat()
{
    return new [] { RandomLolCat() }.Concat(_Cats);
}

答案 1 :(得分:-3)

要直接回答问题,我不相信根据您的语法可以达到您想要的结果。

听起来你想要的是返回已知List<Cat>前加RandomLolCat的{​​{1}}。为什么不在没有yield关键字的情况下执行此操作?

List<Cat> _Cats; // created somewhere else

public IEnumerable<Cat> LeadWithLolCat()
{
    var result = _Cats.Select(e=> e);
    result.Insert(new RandomLolCat(), 0);
    return result;
}