如何将存储过程的结果转换为 asp.net 中的逗号分隔列表?
How can I turn the results of a stored procedure into a comma-separated list in asp.net?
如何将 asp.net 中调用的存储过程的结果转换为逗号分隔的列表?
此列表随后将用作另一个存储过程的参数。
我正在使用 C#,Visual Studio 2010,asp.net 4.0 版,SQL Server 2008 R2。
我正在创建批量报告并通过电子邮件发送。
这是我目前的情况:
SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["SomeConnectString"].ConnectionString);
con.Open();
using (var command = new SqlCommand("Report_FilterSproc", con)
{
CommandType = System.Data.CommandType.StoredProcedure
})
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
// do something here to convert these results to a comma-separated list.
}
};
con.Close();
一种方法,使用 ICollection<String>
,构建它然后使用 String.Join()
将其转储为 CSV:
/* ... */
ICollection<String> values = new HashSet<String>();
while (reader.Read())
{
values.Add(/*reader value*/);
}
String csv = String.Join(",", values);
另一种选择是使用 StringBuilder
:
/*...*/
var builder = new StringBuilder();
while (reader.Read())
{
builder.Append(builder.Length > 0 "," : "").Append(/*reader value */);
}
String csv = builder.ToString();
SqlConnection con = new
SqlConnection(WebConfigurationManager.ConnectionStrings["SomeConnectString"].ConnectionString);
con.Open();
List<string> lt = new List<string>();
using (var command = new SqlCommand("Report_FilterSproc", con)
{
CommandType = System.Data.CommandType.StoredProcedure
})
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
lt.add(reader.GetString(1));
}
};
con.Close();
doStuff(string.Join<string>(";", lt);
您可以使用 List<string>
和 string.join
创建逗号分隔的字符串
List<string> lstString = new List<string>();
SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["SomeConnectString"].ConnectionString);
con.Open();
using (var command = new SqlCommand("Report_FilterSproc", con))
{
command.CommandType = System.Data.CommandType.StoredProcedure;
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
lstString.Add(reader["ColumnName"].ToString());
//do something here to convert these results to a comma separated list.
}
}
}
con.Close();
string result = string.Join(",", lstString.ToArray());
顺便说一句,请正确使用SqlCommand
。
如何将 asp.net 中调用的存储过程的结果转换为逗号分隔的列表?
此列表随后将用作另一个存储过程的参数。
我正在使用 C#,Visual Studio 2010,asp.net 4.0 版,SQL Server 2008 R2。
我正在创建批量报告并通过电子邮件发送。
这是我目前的情况:
SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["SomeConnectString"].ConnectionString);
con.Open();
using (var command = new SqlCommand("Report_FilterSproc", con)
{
CommandType = System.Data.CommandType.StoredProcedure
})
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
// do something here to convert these results to a comma-separated list.
}
};
con.Close();
一种方法,使用 ICollection<String>
,构建它然后使用 String.Join()
将其转储为 CSV:
/* ... */
ICollection<String> values = new HashSet<String>();
while (reader.Read())
{
values.Add(/*reader value*/);
}
String csv = String.Join(",", values);
另一种选择是使用 StringBuilder
:
/*...*/
var builder = new StringBuilder();
while (reader.Read())
{
builder.Append(builder.Length > 0 "," : "").Append(/*reader value */);
}
String csv = builder.ToString();
SqlConnection con = new
SqlConnection(WebConfigurationManager.ConnectionStrings["SomeConnectString"].ConnectionString);
con.Open();
List<string> lt = new List<string>();
using (var command = new SqlCommand("Report_FilterSproc", con)
{
CommandType = System.Data.CommandType.StoredProcedure
})
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
lt.add(reader.GetString(1));
}
};
con.Close();
doStuff(string.Join<string>(";", lt);
您可以使用 List<string>
和 string.join
List<string> lstString = new List<string>();
SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["SomeConnectString"].ConnectionString);
con.Open();
using (var command = new SqlCommand("Report_FilterSproc", con))
{
command.CommandType = System.Data.CommandType.StoredProcedure;
using (SqlDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
lstString.Add(reader["ColumnName"].ToString());
//do something here to convert these results to a comma separated list.
}
}
}
con.Close();
string result = string.Join(",", lstString.ToArray());
顺便说一句,请正确使用SqlCommand
。