LINQ c#mvc4 null引用异常

时间:2014-03-23 20:19:51

标签: c# sql linq asp.net-mvc-4

我正在尝试学习LINQ,我遇到了一个我无法理解的null ref异常错误的问题。

我的项目/意图概述:我在数据库中有2个表。一个是客户,一个是订单。 Customers表具有ID,Name列。 Orders表具有orderID,Description和CustomerID列。

Customers
ID       Name
1        eeee
2        dddd
3        ffff

Orders
ID       Description   CustomerID
1        sdffds        2
2        dsfasdf       2
3        fjdsa         1
4        dfsa          3

我要做的是选择并仅显示包含超过1个订单的客户(在这种情况下,只有ID为2的客户)。

我有一个ViewModel类

 public class ViewModel
    {
      public List<Customer> Customers { get; set; } //list of customer objects 
      public List<Order> Orders { get; set; } //list of customer objects 
    }

在我的家庭控制器的索引操作中,我有:

        public ActionResult Index()
        {

         Context db = new Context(); //create new Context Object named db which contains lists of objects pulled from database server

         ViewModel model = new ViewModel(); //create new ViewModel Object named model which contains lists of objects

         model.Customers = db.Customers.ToList(); //pull Customers data table from db 

         var groups = db.Orders.GroupBy(custgroup => custgroup.CustomerId).Where(group => group.Count()>1); //pull Orders data table from db and group by CustomerID, and choose only groups with more than 1 records.

            foreach (var group in groups)
            {
                foreach (Order order in group)
                //foreach (var order in group)
                {
                    model.Orders.Add(order); //***The null exception occurs here where 'Orders' is null. Check for null before calling method***
                }
            }


            return View(model);
           }

实际上,我要做的是按客户分组订单并选择我选择的订单组。然后将组中的各个记录放回原始对象格式。从调试开始,我想我已经实现了过滤过程。当我尝试将记录放回到模型中时,会出现问题。订单&#39;名单。

null异常发生在内部foreach内部,其中&#39; Orders&#39; list为null。错误指示是.Orders列表为空和/或尚未声明。但我认为该列表是在顶部的ViewModel model = new ViewModel();语句中声明的。

如何修复此null异常错误? TIA。

1 个答案:

答案 0 :(得分:4)

您忘记初始化model.Orders。

model.Orders = new List<Order>();

创建模型后它应该可以工作。