首页 > 解决方案 > 如果它包含任何项目,则枚举可枚举的功能方法

问题描述

我只是在寻找替代方案

if (enumerable.Any())
{
   // Code to Map to new type.
}

我知道 linq 中的 foreach 方法可以做到这一点,但它返回 void,我需要一些可以将集合传递给新类型的东西。

我试图避免的问题是两次枚举集合并降低圈复杂度。

我想知道 linq 库中是否有任何现有的方法可以允许这样做。

标签: c#linqfunctional-programmingienumerable

解决方案


Select似乎是最好的选择,但如果您的映射很复杂和/或没有生成简单的类型,那么您必须在if. 在这种情况下,您可以手动处理枚举:

var e = enumerable.GetEnumerator();
if (e.MoveNext()) {
    // Code to Map to new type.
    do {
        // map e.Current to new type
    } while (e.MoveNext());
}

推荐阅读