用于非类型化 IEnumerable 的 LINQ

LINQ for untyped IEnumerable

我正在通过反射获取 e 对象,然后,如果它是 IEnumerable,则将其转储到字符串:

public static string EnumerableToString(this IEnumerable e, string separator)
{
    List<string> list = new List<string>();
    foreach (object item in e)
        list.Add($"\"{item}\"");
    return "[" + string.Join(separator, list) + "]";
}

我想知道是否有更紧凑的方法来使用 LINQ 执行此操作。 LINQ的Select方法只适用于IEnumerable<T>,不适用于IEnumerable

您可以使用OfType方法:

public static string EnumerableToString(this IEnumerable e, string separator)
{
    return $"[{string.Join(separator, e.OfType<object>().Select(x => $"\"{x}\""))}]";
}