我有一个数据表,其中包含两列InvoiceNo和InvoiceDate,我想在这样的文本框中打印这些值:
Table
Invoice No Invoice Date
001 2/10/2013
006 7/10/2014
009 9/11/2014
我想在日期为2013年2月10日,2014年7月10日,2014年9月9日的发票号001,006,009等文本框中打印出来。 现在的问题是如何在它们之间插入(,)。我无法做到这一点。
答案 0 :(得分:1)
试试这个: -
var result = string.Format("Invlice Number {0} dated on {1} resp.", String.Join(",", tables.Select(x => x.InvoiceNumber.ToString("000"))),
String.Join(",", tables.Select(x => x.InvoiceDate.ToShortDateString())));
为简单起见,我使用了List而不是dataTable。
或者对于DataTable,请尝试以下方法: -
string output = string.Format("Invoice Number {0} dated on {1} resp.", String.Join(",", (from DataRow dr in tab.Rows
select ((int)dr["InvoiceNumber"]).ToString("000")) ),
String.Join(",", (from DataRow dr in tab.Rows
select ((DateTime)dr["InvoiceDate"]).ToShortDateString())));
答案 1 :(得分:0)
您可以使用LINQ和String.Join()的混合来执行此操作。
var rows = (from DataRow row in table.Rows select row["columnname"].ToString()).ToList();
var commaSeparated = string.Join(", ", rows);
答案 2 :(得分:0)
由于我们对您的工作一无所知,这里有一些您可能需要的步骤;
SqlConnection
和SqlCommand
来获取这些值。using(SqlConnection con = new SqlConnection())
using(SqlCommand cmd = con.CreateCommand())
SqlDataReader
通过.Read
方法提供阅读行(这会逐行读取您的行)并将string
个变量定义为finalNo
和finalDate
字符串的结果。string finalNo = null, finalDate = null;
using(SqlDataReader reader = cmd.ExecuteReader())
{
while(reader.Read())
{
}
}
reader[0]
,将第二列读为reader[1]
,并与finalNo
和finalDate
字符串连接while(reader.Read())
{
finalNo += reader[0].ToString() + ",";
finalDate += reader[1].ToString() + " ,";
}
TrimEnd()
字符串上的最后一个逗号,如<; li>
finalNo = finalNo.TrimEnd(',');
finalDate = finalDate.TrimEnd(',', ' ');
string.Format
属性中使用Text
; TextBox1.Text = string.Format("Invoice Number {0} dated on {1}",
finalNo,
finalDate);