全部,我在下面的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
值时没有任何问题。返回的集合。
感谢任何帮助。
干杯。
答案 0 :(得分:0)
首先,EF模型已更新?如果您的模型PriceEnd
字段仍为decimal
,但可能会变为decimal?
LINQ null检查,以避免这些记录:
... context.Pricings.Where(x => x.AnimalType.Type == _filter && x.PriceEnd != null)...