当datagridview单元格为空时,C#LINQ查询显示和异常

时间:2015-08-02 11:31:54

标签: c# linq exception datagridview null

好吧,我有一个带有此代码的按钮:

private void btnCalculate_Click(object sender, EventArgs e)
{
        lblAvg.Text = String.Format("Average score: {0:F2}",
            (from GridViewRowInfo row in studentGridView.Rows
             where row.Cells[1].Value.ToString() != string.Empty
             select Convert.ToDouble(row.Cells[1].Value)).Average());
}

如果在单元格[1]中至少有一个数字(一个单元格带数字),它可以正常工作,但如果没有,则返回异常:

An unhandled exception of type 'System.InvalidOperationException' occurred in System.Core.dll

首先问题出在哪里,其次是在获得价值之前有一个更明智的方法来检查,当没有任何价值且它是空的或空的时候。

2 个答案:

答案 0 :(得分:0)

在你的“哪里”部分你应该做那样的事情:

lblAvg.Text = String.Format("Average score: {0:F2}", studentGridView == null ? string.Empty : 
 (from GridViewRowInfo row in studentGridView.Rows
              where row.Cells.Count() > 0 && row.Cells[1].Value.ToString() != string.Empty
             select Convert.ToDouble(row.Cells[1].Value)).Average().ToString());

答案 1 :(得分:0)

DefaultIfEmpty()之前使用.Average()扩展方法 在您的情况下,如果不存在行,则返回0