我的问题当然正是我的标题所说的。我对linq还很新。但它的用处使我有必要学习它。
我的查询是正在进行的工作。我觉得我差不多了,但即使在名为DataView的DataGridView中有很多东西,我也会得到空列表。
到目前为止,这是我的查询。
List<List<string>> newData = new List<List<string>>();
newData = DataView.Rows.OfType<DataGridViewRow>()
.Select(row => row.Cells.OfType<DataGridViewCell>()
.Select(cell => cell.Value.ToString())
.Where(s => !string.IsNullOrWhiteSpace(s))
.ToList()
.ToList()) as List<List<string>>;
我的查询基于here on an MSDN forum.
答案 0 :(得分:1)
您的LINQ语句返回的内容实际上是IEnumerable<List<string>>
。
使用as List<List<string>>
投射结果时,最终会得到null
...因为结果实际上不是那种类型。
目前你已经有了这个,这是多余的:
.ToList().ToList()
相应地修改您的LINQ语句:
List<List<string>> newData =
dataGridView1.Rows.OfType<DataGridViewRow>()
.Select(row => row.Cells.OfType<DataGridViewCell>()
.Select(cell => cell.Value.ToString())
.Where(s => !string.IsNullOrWhiteSpace(s))
.ToList())
.ToList();