C#EF6将Linq结果绑定到DataGridView,其中date列为null

时间:2015-02-21 16:16:23

标签: c# linq-to-entities entity-framework-6

全部,我在下面的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和实体框架6,以及SQL Server 2012.

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

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

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

我看了很多,我可以在Linq查询的where子句中找到大量有关处理null的引用,但我发现在处理null值时没有任何问题。返回的集合。

感谢任何帮助。

干杯。

1 个答案:

答案 0 :(得分:0)

首先,EF模型已更新?如果您的模型PriceEnd字段仍为decimal,但可能会变为decimal?

,则可能会抛出NullReferenceException

LINQ null检查,以避免这些记录:

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