C# 如何将Listview转换为DataTable

C# 如何将Listview转换为DataTable,c#,vb.net,winforms,listview,datatable,C#,Vb.net,Winforms,Listview,Datatable,我见过许多从datatable填充listview或将datatable转换为listview的示例,但我尝试的正是相反的方法 如何将winform listview的内容转换/复制到datatable [编辑] 我有一个带有上下文菜单的listview,用户可以在其中选择多个项目并选择其中一个上下文菜单选项,然后循环所选项目并提取每个所选行(listview项目)并序列化它,与此相反,我希望将listview转换为datatable,然后将datatable添加到dataset并序列化data

我见过许多从datatable填充listview或将datatable转换为listview的示例,但我尝试的正是相反的方法

如何将winform listview的内容转换/复制到datatable

[编辑]

我有一个带有上下文菜单的listview,用户可以在其中选择多个项目并选择其中一个上下文菜单选项,然后循环所选项目并提取每个所选行(listview项目)并序列化它,与此相反,我希望将listview转换为datatable,然后将datatable添加到dataset并序列化dataset

谢谢诸如此类的东西(完全未经测试)

类似的(完全未经测试)

DataTable=newdatatable();
表.Columns.Add(“MODUL”,typeof(string));
表.Columns.Add(“ACIKLAMA”,typeof(string));
表.Columns.Add(“UZUNLUK”,typeof(string));
table.Columns.Add(“GENISLIK”,typeof(string));
表.Columns.Add(“MIKTAR”,typeof(string));
对于(int i=0;i
数据表=新数据表();
表.Columns.Add(“MODUL”,typeof(string));
表.Columns.Add(“ACIKLAMA”,typeof(string));
表.Columns.Add(“UZUNLUK”,typeof(string));
table.Columns.Add(“GENISLIK”,typeof(string));
表.Columns.Add(“MIKTAR”,typeof(string));
对于(int i=0;i
我觉得公认的答案不合适。以下是一个经过测试的替代方案:

public static void FromListView(DataTable table, ListView lvw)
{
   table.Clear();
   var columns = lvw.Columns.Count;

   foreach (ColumnHeader column in lvw.Columns)
      table.Columns.Add(column.Text);

   foreach (ListViewItem item in lvw.Items)
   {
      var cells = new object[columns];
      for (var i = 0; i < columns; i++)
         cells[i] = item.SubItems[i].Text;
      table.Rows.Add(cells);
   }
}
来自ListView的公共静态void(DataTable表,ListView lvw) { 表1.Clear(); var columns=lvw.columns.Count; foreach(lvw.Columns中的ColumnHeader列) table.Columns.Add(column.Text); foreach(lvw.Items中的ListViewItem项) { 变量单元格=新对象[列]; 对于(变量i=0;i
我觉得公认的答案不合适。以下是一个经过测试的替代方案:

public static void FromListView(DataTable table, ListView lvw)
{
   table.Clear();
   var columns = lvw.Columns.Count;

   foreach (ColumnHeader column in lvw.Columns)
      table.Columns.Add(column.Text);

   foreach (ListViewItem item in lvw.Items)
   {
      var cells = new object[columns];
      for (var i = 0; i < columns; i++)
         cells[i] = item.SubItems[i].Text;
      table.Rows.Add(cells);
   }
}
来自ListView的公共静态void(DataTable表,ListView lvw) { 表1.Clear(); var columns=lvw.columns.Count; foreach(lvw.Columns中的ColumnHeader列) table.Columns.Add(column.Text); foreach(lvw.Items中的ListViewItem项) { 变量单元格=新对象[列]; 对于(变量i=0;i只需做相反的事情。你试过什么?任务的哪一部分你遇到了麻烦?创建一个新的DataTable,创建与列表视图中的列相匹配的列,然后添加行。让我们看看如何将数据表中的内容连接到Listview中的一些代码检索列表中所需的Listview项,然后只使用list.ToDataTable()或.ToDataView()方法..如果你在列表中看不到ext选项,请告诉我知识..我可以给你一个扩展方法我已经编辑了这个问题,但我想我已经了解了这个概念。谢谢你的意见。只需做相反的事情。你试过什么?任务的哪一部分你遇到了麻烦?创建一个新的DataTable,创建与列表视图中的列相匹配的列,然后添加行。让我们看看如何将数据表中的内容连接到Listview中的一些代码检索列表中所需的Listview项,然后只使用list.ToDataTable()或.ToDataView()方法..如果你在列表中看不到ext选项,请告诉我知识..我可以给你一个扩展方法我已经编辑了这个问题,但我想我已经了解了这个概念。谢谢你的输入。测试了这个,它工作了,做了一些小改动,我现在可以做我想做的,谢谢你的输入。测试了这个,它工作了,做了一些小改动,我现在可以做我想做的,谢谢你的输入。
public static void FromListView(DataTable table, ListView lvw)
{
   table.Clear();
   var columns = lvw.Columns.Count;

   foreach (ColumnHeader column in lvw.Columns)
      table.Columns.Add(column.Text);

   foreach (ListViewItem item in lvw.Items)
   {
      var cells = new object[columns];
      for (var i = 0; i < columns; i++)
         cells[i] = item.SubItems[i].Text;
      table.Rows.Add(cells);
   }
}