试图找到“null”但不能 - NullReferenceException

时间:2014-10-21 02:51:09

标签: c# linq datagridview

我希望它能够接受将null作为返回值但是在拉动不存在的数据时我不断出现nullexception错误...是的我理解这听起来如何。

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

获取null错误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();
}

2 个答案:

答案 0 :(得分:0)

使用FirstOrDefault()代替First()

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

阅读When to use .First and when to use .FirstOrDefault with LINQ?

答案 1 :(得分:0)

自原始问题发布以来已经有一段时间了,但这对我有用。我希望这有助于其他人。 首先检查值是否为null。然后尝试进行转换并检查值

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