我有两个arraylists。 一个包含文件名,另一个包含failurecount。 这些值来自后面代码中的数据库表。
现在我想将这两个arraylists添加到一个数据表中。 有没有办法做到这一点?
答案 0 :(得分:3)
这里有很多错误。首先,对于.Net 2.0及更高版本,您应该不再使用ArrayLists。请改用通用List<T>
。其次,同样重要的是,最佳方法将这些数据放入相同的数据表中是重新编写用于生成它们的sql,这样您只需要一个查询而不是两个查询。最后,您没有共享任何代码。如果我们看不到您正在使用的代码,我们如何帮助您解决问题?
答案 1 :(得分:1)
您提供的信息相当有限,所以'我会在这里猜测。
var table = new DataTable();
table.Columns.Add("value1");
table.Columns.Add("value2");
for (int i = 0; i < arrayListOne.Count; i++)
{
var row = table.NewRow();
row["value1"] = arrayListOne[i];
row["value2"] = arrayListTwo[i];
table.Rows.Add(row);
}
当然,只有两个列表的长度相同时才会有效。
如果这不是您想要的,则必须添加更多信息。
答案 2 :(得分:0)
是的,有很多方法可以将两个ArrayList实例添加到一个DataTable实例中。这是一种显示如何使用编译到.NET Framework 2.0的完整代码示例将任意数量的ArrayLists添加到一个DataTable的方法。
注意:其他人在尝试破译您正在做的事情时做得很好 - 我将直接用完整的代码段回答问题,以防您获得任何见解从它为你自己。
这确实不是一个复杂的答案 - 它只是首先设置几个ArrayList实例,其中包含与您的问题相关的样本数据,并在最后提供一个片段来测试解决方案。
请评论您在此处找到的见解,如果有的话。谢谢。
namespace Com.StackOverflow {
using System.Diagnostics;
using System.Data;
using System.Collections;
public static class SOQuestion__Add_two_arraylists_in_a_datatable {
public static void AnswerQuestionDirectly() {
// - - - - - - - - Prelimary setup to question - - - - - - - -
// Sample list of filenames (3 elements in total).
ArrayList listFilenames = new ArrayList( new[] {@"C:\a.dat", @"C:\b.dat", @"C:\c.dat"} );
// Sample list of error counts (2 elements in total).
ArrayList listFailureCounts = new ArrayList( new[] {88,51} );
// - - - - - - A Direct answer to the question - - - - - - -
// Create DataTable structure with one column.
DataTable dTable = new DataTable();
dTable.Columns.Add("Column 1");
/* Populate DataTable with all lists at once.
* Note: keep appending
* to { array initialization list } all lists you want included
* in the DataTable instance.
*/
foreach (ArrayList currentList in new[] { listFilenames, listFailureCounts }) {
foreach (object element in currentList)
dTable.Rows.Add(new[] { element }); // one column per row
}
// - - - - - - - - Test it for expected counts - - - - - - - -
int totalExpected = listFilenames.Count + listFailureCounts.Count;
//Verify DataTable contains the same amount of rows.
Debug.Assert(dTable.Rows.Count == totalExpected);
}
}
}
可以将上述答案复制并粘贴到.cs文件中,并使用以下代码运行:using Com.StackOverflow;
。
SOQuestion__Add_two_arraylists_in_a_datatable.AnswerQuestionDirectly();