c# - 需要帮助将此方法(使用 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;
}
任何人都可以帮助如何将其变成一个通用函数,该函数可以将数据集、数据表、字符串数组、列表和可能的其他内容作为输入参数?
解决方案
要使泛型函数起作用,您需要找到一个适用于所有传入类型的接口,例如 iList、ICollection、IEnumerable 等。如果找不到所有这些的接口,请尝试检查所有对象的类型这些接口并具有将数据复制到您然后加入的列表的代码。
推荐阅读
- excel - IF 公式仅在 A1=A2、B1=B2 时返回值
- oop - 传递一个对象来设置一个私有字段被认为是紧密耦合的吗?
- bash - 使用 sed 将字符串拆分为固定大小的片段
- azure - 虚拟目录部署的内部错误
- shell - Informatica:仅当所有记录的值 Accepted = Y 时才处理文件,否则不处理整个文件
- sql - SQL 查询中的 Orderby 子句错误
- ios - 我可以使用同一个 Apple ID 同时注册开发者和企业帐户许可证吗?
- java - 如何将 java jdbc 代码转换为 Maximo 代码
- python - Flask 应用程序中的导入错误
- javascript - 需要在没有 inbuit 函数的 javascript 字符串反转中解决这个问题