簡體   English   中英

LINQ C#MVC4空引用異常

[英]LINQ c# mvc4 null reference exception

我正在嘗試學習LINQ,但遇到無法理解的null ref異常錯誤的問題。

項目/意圖概述:數據庫中有2個表。 一個是客戶,一個是訂單。 客戶表具有ID,名稱列。 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);
           }

實際上,我想做的是按客戶對訂單進行分組,然后選擇自己選擇的訂單組。 然后將各組中的各個記錄放回原始對象格式。 通過調試,我認為我已經實現了過濾過程。 當我嘗試將記錄放回到“ model.Orders”列表中時,會發生問題。

空異常發生在內部foreach內部,其中“訂單”列表為空。 錯誤指示是.Orders列表為null和/或尚未聲明。 但我認為該列表已在語句ViewModel model = new ViewModel();聲明ViewModel model = new ViewModel(); 在頂部。

如何解決此null異常錯誤? TIA。

您忘記初始化model.Orders。

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

創建模型后,它應該可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM