我可以使用字符串或IEnumerable <T>,其中T是字符串或IEnumerable <T>吗?

西奥多罗斯·查齐吉安娜基斯

我有一个实用程序方法来处理字符串集合,比如说:

    public static string MyJoin(this IEnumerable<string> strings)
    {
        return string.Join(Environment.NewLine, strings);
    }

我希望能够还处理IEnumerable<IEnumerable<string>>IEnumerable<IEnumerable<IEnumerable<string>>>等,他们都以这种方式:

    public static string MyJoin(this IEnumerable<IEnumerable<string>> strings)
    {
        return strings.Select(x => x.MyJoin()).MyJoin();
    }

    public static string MyJoin(this IEnumerable<IEnumerable<IEnumerable<string>>> strings)
    {
        return strings.Select(x => x.MyJoin()).MyJoin();
    }

有什么方法可以在不对我可能要使用的所有可能级别进行硬编码的情况下,优雅地表达这一点?

  • 我已经尝试过使用泛型,但是我只是想不出正确的约束条件(如果有的话)。
  • 如果可能的话,我也想避免声明一个新类型。
  • 另一方面,性能并不关键。
西奥多罗斯·查齐吉安娜基斯

部分受Stefan的答案启发,我已经找到了一个可行的解决方案,该解决方案无需使用泛型即可进行编译,并且(不幸的是)使用大多数运行时类型检查进行编译:

    public static string MyJoin(this IEnumerable<string> strings)
    {
        return string.MyJoin(Environment.NewLine, strings);
    }
    public static string MyJoin(this IEnumerable<object> items)
    {
        if (items.All(x => x is string))
            return items.Cast<string>().MyJoin();

        if (items.All(x => x is IEnumerable<object>))
            return items.Cast<IEnumerable<object>>().Select(x => x.MyJoin()).MyJoin();

        throw new InvalidOperationException("The argument was not a nested enumerable of strings.");
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从T到字符串以及从字符串到T的类型转换,其中T被称为字符串

来自分类Dev

可以在 LabVIEW DLL 中使用“wchar_t”字符串指针吗?

来自分类Dev

MemoryRead <T>仅T int,float,字符串和sizeof(T)吗?

来自分类Dev

RemoteAttribute未正确将查询字符串作为IEnumerable <T>传递

来自分类Dev

我可以通过.Net中基于字符串的索引从List <T>中获取元素吗?(即:T val = List <T> [“ NameHere”])

来自分类Dev

您可以使用List <T>满足IEnumerable <T>的接口吗?

来自分类Dev

您可以使用List <T>满足IEnumerable <T>的接口吗?

来自分类Dev

T字符串使用引用时

来自分类Dev

我可以使用通配符比较字符串吗?

来自分类Dev

Enum <T> .Parse允许解析任何为整数的字符串。.net核心中的错误吗?

来自分类Dev

我可以使用字符串作为可执行代码行的一部分吗?

来自分类Dev

我可以使用字符串作为可执行代码行的一部分吗?

来自分类Dev

计数字符串中的字符不适用于制表符('\ t')。我使用错误的方法吗?

来自分类Dev

如何创建列表<T>地图<字符串,T>而不是地图<字符串,列表<T >>?

来自分类Dev

T-SQL:我需要一个存储过程来使动态字符串工作吗?

来自分类Dev

使用 LinkText 时可以使用字符串变量吗?

来自分类Dev

将字符串转换为T

来自分类Dev

T / SQL-字符串操作

来自分类Dev

C ++字符串size_t

来自分类Dev

显示包含'\ t'的字符串

来自分类Dev

(格式t ...)的分割格式字符串

来自分类Dev

(格式t ...)的分割格式字符串

来自分类Dev

将字符串转换为T

来自分类Dev

可以使用字符串来引用对象属性吗?

来自分类Dev

在Swift中,可以使用字符串来访问struct属性吗?

来自分类Dev

在Swift的if条件中可以使用字符串变量吗?

来自分类Dev

可以使用字符串来引用对象属性吗?

来自分类Dev

C++ 中可以使用字符串数组吗?

来自分类Dev

您可以使用字符串拆分创建交互式菜单吗?

Related 相关文章

  1. 1

    从T到字符串以及从字符串到T的类型转换,其中T被称为字符串

  2. 2

    可以在 LabVIEW DLL 中使用“wchar_t”字符串指针吗?

  3. 3

    MemoryRead <T>仅T int,float,字符串和sizeof(T)吗?

  4. 4

    RemoteAttribute未正确将查询字符串作为IEnumerable <T>传递

  5. 5

    我可以通过.Net中基于字符串的索引从List <T>中获取元素吗?(即:T val = List <T> [“ NameHere”])

  6. 6

    您可以使用List <T>满足IEnumerable <T>的接口吗?

  7. 7

    您可以使用List <T>满足IEnumerable <T>的接口吗?

  8. 8

    T字符串使用引用时

  9. 9

    我可以使用通配符比较字符串吗?

  10. 10

    Enum <T> .Parse允许解析任何为整数的字符串。.net核心中的错误吗?

  11. 11

    我可以使用字符串作为可执行代码行的一部分吗?

  12. 12

    我可以使用字符串作为可执行代码行的一部分吗?

  13. 13

    计数字符串中的字符不适用于制表符('\ t')。我使用错误的方法吗?

  14. 14

    如何创建列表<T>地图<字符串,T>而不是地图<字符串,列表<T >>?

  15. 15

    T-SQL:我需要一个存储过程来使动态字符串工作吗?

  16. 16

    使用 LinkText 时可以使用字符串变量吗?

  17. 17

    将字符串转换为T

  18. 18

    T / SQL-字符串操作

  19. 19

    C ++字符串size_t

  20. 20

    显示包含'\ t'的字符串

  21. 21

    (格式t ...)的分割格式字符串

  22. 22

    (格式t ...)的分割格式字符串

  23. 23

    将字符串转换为T

  24. 24

    可以使用字符串来引用对象属性吗?

  25. 25

    在Swift中,可以使用字符串来访问struct属性吗?

  26. 26

    在Swift的if条件中可以使用字符串变量吗?

  27. 27

    可以使用字符串来引用对象属性吗?

  28. 28

    C++ 中可以使用字符串数组吗?

  29. 29

    您可以使用字符串拆分创建交互式菜单吗?

热门标签

归档