C# 使用Linq从DataGridView中选择多行
我试图从C# 使用Linq从DataGridView中选择多行,c#,linq,datagridview,C#,Linq,Datagridview,我试图从DataGridView中选择多行,而不是使用for each循环进行迭代 我可以使用以下代码选择1项: DataGridViewRow row2 = (from DataGridViewRow r in dgView.Rows where r.Cells["name"].Value.ToString().Equals("Akins Ford")select r).FirstOrDefault(); List<DataGridViewRow> rows2
DataGridView
中选择多行,而不是使用for each循环进行迭代
我可以使用以下代码选择1项:
DataGridViewRow row2 =
(from DataGridViewRow r in dgView.Rows
where r.Cells["name"].Value.ToString().Equals("Akins Ford")select r).FirstOrDefault();
List<DataGridViewRow> rows2 =
(from DataGridViewRow r in dgView.Rows
where r.Cells["status"].Value.ToString().Equals("active")select r);
但当我尝试选择多行时,使用以下代码:
DataGridViewRow row2 =
(from DataGridViewRow r in dgView.Rows
where r.Cells["name"].Value.ToString().Equals("Akins Ford")select r).FirstOrDefault();
List<DataGridViewRow> rows2 =
(from DataGridViewRow r in dgView.Rows
where r.Cells["status"].Value.ToString().Equals("active")select r);
列出行2=
(来自dgView.Rows中的DataGridViewRow r
其中r.Cells[“status”].Value.ToString().Equals(“active”)选择r;
我有一个错误:
错误2无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Collections.Generic.List”。存在显式转换(是否缺少转换?)C:\Software\Json\Json\Form1.cs 188 18 Json
您需要对结果进行简单的换行:
List<DataGridViewRow> rows2 =
new List<DataGridViewRow>
(from DataGridViewRow r in dgView.Rows
where r.Cells["status"].Value.ToString().Equals("active")
select r);
将“?”放在
单元格[“status”]
之后可确保任何空引用都会导致空引用。最后一个??false
表示,如果有null,我们返回false(即不包括此行)。或者只使用ToList
代码编译,但我得到以下错误:对象引用未设置为对象的实例。where子句中可能存在异常。单元格的值可能为空吗?是的,我确实有一行可以为空-这就解决了它。谢谢您可以尝试一下,而不是.FirstOrDefault()try.ToList()?我得到的对象引用没有设置为对象的实例。你能试试这个吗<代码>dataGridView1.Rows.Cast().Where(x=>x.Cells[“状态”].Value.ToString()==“活动”).ToList().ForEach(x=>x.Selected=true)代码>
r.Cells["status"]?.Value.ToString().Equals("active")??false