首页 > 解决方案 > 需要帮助将此方法(使用 string.Join() 和 LINQ)变成通用方法

问题描述

我编写了一个函数,将 DataTable 的值转换为格式为“value1, value2, value3, ...”的字符串。该函数还接受 columnindex 以及一个环绕符(通常是“'”)作为参数。

我不想为此函数编写许多不同的变体(例如,一个带有数据集,一个带有列表等),我只想为此创建一个通用的函数。

我已经尝试将 IEnumerable 添加到函数头,但随后在函数内部出现“无法使用 [] 将索引应用到类型为 'T' 的表达式”错误。

我认为我需要为此创建一个界面(?),但我对此没有太多/任何经验。

这是我想成为通用函数的原始函数:

public static string GenerateWhereInListFromData(DataTable dt_data, int columnIndex, string separator)
{
    string resultList = string.Join(", ", dt_data.AsEnumerable().Select(tmp => separator + tmp[columnIndex].ToString() + separator));

    return resultList;
}

任何人都可以帮助如何将其变成一个通用函数,该函数可以将数据集、数据表、字符串数组、列表和可能的其他内容作为输入参数?

标签: c#stringlinqgenericsjoin

解决方案


要使泛型函数起作用,您需要找到一个适用于所有传入类型的接口,例如 iList、ICollection、IEnumerable 等。如果找不到所有这些的接口,请尝试检查所有对象的类型这些接口并具有将数据复制到您然后加入的列表的代码。


推荐阅读