C# EF6 将 Linq 结果绑定到日期列为空的 DataGridView 问题

C# EF6 issue binding Linq result to DataGridView where date column is null

全部,我遇到以下 Linq 查询问题:

private void BindDataGrid(string _filter)
{
    using (var context = new Kennels_Data_ModelContainer())
    {
        var grid = context.Pricings
            .Where(x => x.AnimalType.Type == _filter)
            .Select(x=> new {x.PriceStart, x.PriceEnd, x.Price});

        if (grid != null)
        {
            var results = grid.ToList();
            pricingDataGridView.DataSource = results;
            pricingDataGridView.Columns[0].Width = 80;
            pricingDataGridView.Columns[1].Width = 80;
            pricingDataGridView.Columns[2].Width = 57;
        }
    }
}

我正在使用 Visual Studio 2013 和 Entity framework 6,以及 SQL Server 2012。

在我更改数据库中的 PriceEnd 列以允许它保存空值之前,查询工作正常,而且我知道其中至少有一行包含空值。

此代码保存在 Windows 表单中,由表单的 Load 方法调用,以绑定到 pricingdataGridView

代码抛出 System.NullReferenceException,附加信息为 Object reference not set to an instance of an object

我找遍了,我可以在 Linq 查询的 where 子句中找到大量关于处理 null 的参考资料,但我找不到任何与处理 null 有关的内容返回集中的值。

感谢任何帮助。

干杯。

请问EF模型更新了吗?如果在您的模型中 PriceEnd 字段保持 decimal,但应该变为 decimal?

,则可能会抛出 NullReferenceException

LINQ 空检查,避免这些记录:

... context.Pricings.Where(x => x.AnimalType.Type == _filter && x.PriceEnd != null)...