试图找到“;空”;但是可以';t——NullReference异常

本文关键字:异常 NullReference | 更新日期: 2023-09-27 18:27:10

我希望它能够接受将null作为返回值,但在提取不存在的数据时,我不断收到nullexception错误。。。是的,我理解这听起来怎么样。

基本上,如果在某一列中找不到数据,则创建一行。

正在获取null error where子句,因为它找不到值。。。。我如何克服这个问题,并允许"where"在其行中不出现错误?

var row = RGV.Rows.Cast<DataGridViewRow>()
    .Where(r => r.Cells["firstcolumn"].Value.ToString() == please)
    .First();
if (row != null)
{
    rowIndex = row.Index;
    RGV.Rows[rowIndex].Cells[secondcolumn].Value = help;
    RGV.Refresh();
}
else
{
    RGV.Rows.Add();
    int indexNew = RGV.Rows.Count;
    RGV.Rows[indexNew].Cells["firstcolumn"].Value = please;
    RGV.Rows[indexNew].Cells["secondcolumn"].Value = help;
    RGV.Refresh();
}

试图找到“;空”;但是可以';t——NullReference异常

使用FirstOrDefault()而不是First()

  var row = RGV.Rows.Cast<DataGridViewRow>()
                           .Where(r => (string)r.Cells["firstcolumn"].Value == please)
                           .FirstOrDefault();

请阅读"何时使用。首先和何时使用。使用LINQ时使用FirstOrDefault?"?

最初的问题发布已经有一段时间了,但以下是对我有效的方法。我希望这能帮助其他人。首先检查该值是否为null。然后尝试铸造并检查值

var query = from DataGridViewRow row in dgv.Rows
            where row.Cells[CATEGORY].Value != null
            where row.Cells[CATEGORY].Value.ToString() == categoryName
            select row;