c# 未定义数据类型的对象数量(如 params[])
c# undefined amount of object for data type (like params[])
假设我有一个 sqlite 数据库。该数据库有一个名为 main 的 table,有 5 列(id、c1、c2、c3、c4)。
客户端调用 executeQuery,如下所示:
public Dictionary<int, Tuple<string, string, string, string>> executeSql(string statement) {
var ret = new Dictionary<int, Tuple<string, string, string, string>>;
var dbcmd = conn.CreateCommand();
for(int i = 0; i < Entries; i++) {
dbcmd.CommandText = statement.Replace("i", i.ToString());
var reader = dbcmd.ExecuteReader();
//.... Evalulate query....
ret.Add(); //add to Dic
}
}
我不知道客户在他的声明中要求多少列。有没有什么类型可以让我在这种情况下正常工作。我想要的是这样的:
Dictionary<int, Tuple<params[] string>>
这将为我提供要添加到元组中的可变数量的字符串。
如果没有类似的东西,有什么干净的方法可以解决这个问题,而不是使用一个包含空条目的数组(因为它会打破循环,而且阅读和维护起来非常糟糕),我也不想拥有只对每个案例使用 90% 的相同代码(又名 executeSqlOne()、executeSqlTwo() 等...),因为它会使代码严重膨胀。
在这种情况下,您可以使用 List<string>
而不是 Tuple<string, string, string, string>
,我相信您不必担心 no.of 列。只需将结果列添加到列表中,return 相同。
假设我有一个 sqlite 数据库。该数据库有一个名为 main 的 table,有 5 列(id、c1、c2、c3、c4)。
客户端调用 executeQuery,如下所示:
public Dictionary<int, Tuple<string, string, string, string>> executeSql(string statement) {
var ret = new Dictionary<int, Tuple<string, string, string, string>>;
var dbcmd = conn.CreateCommand();
for(int i = 0; i < Entries; i++) {
dbcmd.CommandText = statement.Replace("i", i.ToString());
var reader = dbcmd.ExecuteReader();
//.... Evalulate query....
ret.Add(); //add to Dic
}
}
我不知道客户在他的声明中要求多少列。有没有什么类型可以让我在这种情况下正常工作。我想要的是这样的:
Dictionary<int, Tuple<params[] string>>
这将为我提供要添加到元组中的可变数量的字符串。
如果没有类似的东西,有什么干净的方法可以解决这个问题,而不是使用一个包含空条目的数组(因为它会打破循环,而且阅读和维护起来非常糟糕),我也不想拥有只对每个案例使用 90% 的相同代码(又名 executeSqlOne()、executeSqlTwo() 等...),因为它会使代码严重膨胀。
在这种情况下,您可以使用 List<string>
而不是 Tuple<string, string, string, string>
,我相信您不必担心 no.of 列。只需将结果列添加到列表中,return 相同。