有没有办法在没有循环的情况下添加具有相同内容的多行?
以下是我目前用来实现此目的的代码。
DataTable dtMessageDetails = new DataTable("Private Message Details");
for (int i = 0; i < 10; i++)
{
dtMessageDetails.Rows.Add("65E6BD38-2806-S15G-9DC5-9DE908333996", 3, 0, "News", "News", Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")), "Publish", "mes", 0, 0, 0, "null", "null", "Active");
}
我的数据表看起来应该是
我想用其他方法替换循环可能是LINQ。
答案 0 :(得分:3)
Linq用于查询数据,而不是用于插入。您可以使用linq准备数据,但是您将使用相同的循环来添加行,这将不会更快。因此,您正在插入相同的数据,我建议您准备这些数据,而不是在每次迭代时创建新的项目数组:
DataTable dtMessageDetails = new DataTable("Private Message Details");
object[] items = { "65E6BD38-2806-S15G-9DC5-9DE908333996", 3, 0, "News", "News",
Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")),
"Publish", "mes", 0, 0, 0, "null", "null", "Active" };
for (int i = 0; i < 10; i++)
dtMessageDetails.Rows.Add(items);
答案 1 :(得分:2)
除了@ lazyberezovsky的回答,我建议你使用DataRowCollection.Add Method (DataRow)方法重载,slightly faster:
var itemArray = new object[] {
"65E6BD38-2806-S15G-9DC5-9DE908333996", 3, 0, "News", "News",
Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd")),
"Publish", "mes", 0, 0, 0, "null", "null", "Active" };
for (int i = 0; i < 10000; i++)
{
var r = dtMessageDetails.NewRow();
r.ItemArray = itemArray;
dtMessageDetails.Rows.Add(r);
}
如果您打算通过代码将相同的行添加到新的DataTable
实例,那么如果您使用DataTable.Copy Method,也可能会提高性能。只需在代码中创建一次上面的行,然后使用以下内容填充另一个数据表:
var dtMessageDetailsCopy = dtMessageDetails.Copy();