在C#中将DataGridView的内容转换为List

获取DataGridView的内容并将这些值放入C#列表的最佳方法是什么?

 var Result = dataGridView1.Rows.OfType().Select( r => r.Cells.OfType().Select(c => c.Value).ToArray()).ToList(); 

或者获取值的字符串字典

 var Result = dataGridView1.Rows.OfType().Select( r => r.Cells.OfType().ToDictionary(c => dataGridView1.Columns[c.OwningColumn].HeaderText, c => (c.Value ?? "").ToString() ).ToList(); 

或者是一种linq方式

 var list = (from row in dataGridView1.Rows.Cast() from cell in row.Cells.Cast() select new { //project into your new class from the row and cell vars. }).ToList(); 

如果使用DataSource绑定列表,则可以转换回来,

 List myClass= DataGridView.Datasource as List ; 

IEnumerable.OfType扩展方法可以成为你最好的朋友。 以下是我通过LINQ查询完成的方法:

 List items = new List(); dataGridView1.Rows.OfType().ToList().ForEach( row => { foreach (DataGridViewCell cell in row.Cells) { //I've assumed imaginary properties ColName and ColValue in MyItem class items.Add(new MyItem { ColName = cell.OwningColumn.Name, ColValue = cell.Value }); } });