C# 如何将DataGridView内容转换为自定义对象列表?

C# 如何将DataGridView内容转换为自定义对象列表?,c#,winforms,list,datagridview,custom-object,C#,Winforms,List,Datagridview,Custom Object,我正在使用C编写一个Windows窗体应用程序 我发现有人建议如何从DataGridView控件创建一个列表,但我不需要更多关于如何提取单元格值的帮助 下面是给出的代码;假设dataGridView1中有两列是Name和Address。 如何构建列表对象 这样试试看 创建类类型的列表 List<ProjectMasterRec>() ProjList = new List<ProjectMasterRec>(); 这样试试看 创建类类型的列表 List<Proj

我正在使用C编写一个Windows窗体应用程序

我发现有人建议如何从DataGridView控件创建一个列表,但我不需要更多关于如何提取单元格值的帮助

下面是给出的代码;假设dataGridView1中有两列是Name和Address。 如何构建列表对象

这样试试看

创建类类型的列表

List<ProjectMasterRec>() ProjList = new List<ProjectMasterRec>(); 
这样试试看

创建类类型的列表

List<ProjectMasterRec>() ProjList = new List<ProjectMasterRec>(); 

如果您能够使用LINQ,您可以执行以下操作:

var projectList = (from row in dataGridView1.Rows.OfType<DataGridViewRow>()
                   select new ProjectMasterRec() 
                   { Name = row.Cells["Name"].Value.ToString(),
                     Address = row.Cells["Address"].Value.ToString() 
                   }).ToList();

如果您能够使用LINQ,您可以执行以下操作:

var projectList = (from row in dataGridView1.Rows.OfType<DataGridViewRow>()
                   select new ProjectMasterRec() 
                   { Name = row.Cells["Name"].Value.ToString(),
                     Address = row.Cells["Address"].Value.ToString() 
                   }).ToList();

下面的方法应该可以工作,myArray应该是您需要的类型的数组,您可以使用DataGrid1.DataSource作为BindingSource.List.Count查找数组大小


下面的方法应该可以工作,myArray应该是您需要的类型的数组,您可以使用DataGrid1.DataSource作为BindingSource.List.Count查找数组大小


是否要获取所有行-列数据并以字符串形式将其作为一条记录插入列表?是否要获取所有行-列数据并以字符串形式将其作为一条记录插入列表?我在您的Linq中发现一个错误,即dgvTest在当前上下文中不存在。如何将var projectList转换为List?当我们使用.ToList转换查询时,为什么不能直接分配给列表。我不想使用var,因为我稍后将使用list。@user2026794-变量dgvTest用于说明。使用实际变量dataGridView1,我也更新了答案。var是一个隐式本地类型,它与System.Object不同,因此在上面的例子中,var变成了List。我在您的Linq中得到一个错误,即dgvTest在当前上下文中不存在。如何将var projectList转换为List?当我们使用.ToList转换查询时,为什么不能直接分配给列表。我不想使用var,因为我稍后将使用list。@user2026794-变量dgvTest用于说明。使用实际变量dataGridView1,我也更新了答案。var是一个隐式的局部类型,它与System.Object不同,因此在上面的例子中,var变成了List。
(DataGrid1.DataSource as BindingSource).List.CopyTo(myArray, 0);