【问题标题】:Return a List of distinct values from DataGridView从 DataGridView 返回不同值的列表
【发布时间】:2016-10-02 22:01:26
【问题描述】:

正如主题所说:有没有办法从 DataGridView 的某个列返回不同值的列表?

【问题讨论】:

  • 您不应该尝试从视图中获取值。相反,从模型中读取它们。
  • 是的,但我可能更多地使用视图而不是数据源。
  • 我认为这个链接适合你:stackoverflow.com/questions/10899568/…
  • 此链接用于计数,我想要一个不同字符串的列表
  • @TaW 不错,这就是我要找的东西

标签: c#


【解决方案1】:

这应该可以满足您的要求:

var vv = dataGridView1.Rows.Cast<DataGridViewRow>()
                           .Select(x => x.Cells[yourColumn].Value.ToString())
                           .Distinct()
                           .ToList();

请注意,上面的简单版本假定只有有效值。如果您还可能有新行或空单元格,您可能希望像这样扩展它:

var vv = dataGridView1.Rows.Cast<DataGridViewRow>()
                           .Where(x => !x.IsNewRow)                   // either..
                           .Where(x => x.Cells[column].Value != null) //..or or both
                           .Select(x => x.Cells[column].Value.ToString())
                           .Distinct()
                           .ToList();

【讨论】:

  • 是否可以将其设为“oneliner”?喜欢将值直接存储到 List ?
  • ???这确实是一个单行,它确实创建了一个 List。我插入换行符只是为了提高可读性。
  • 哦..我缺乏知识令人不安...由于我自己学习了 c#,我并没有确认这个 var 是否可用作数据源。
  • 确实只是简写。将鼠标悬停在单词 var 上,您会看到编译器将评估它的类型。你也可以写List&lt;string&gt; vv = dataGridView1.Rows.Cast&lt;DataGridViewRow&gt;().Select(x =&gt; x.Cells[0].Tag.ToString()).Distinct().ToList(); - 没有注意到 Linq 是我多年来自己犯的一个错误 ;-) `
  • @josef_skywalker:我自己只是将代码用于数据输入自动完成单元格,因此必须扩展一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-01
  • 1970-01-01
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多