如何使用Linq从DataGridView检索非空或空格的字符串列表

时间:2014-07-22 04:01:22

标签: c# linq datagridview

我的问题当然正是我的标题所说的。我对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.

1 个答案:

答案 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();