-1

I have a this model

public class Task
{
    public Task() { }

    public Task(int CategoryID)       
    {         
        this.TaskID = CategoryID;  
    }       

    public int TaskID { get; set; }
}

public class student
{      
    public List<Task> Task { get; set; }      
    public string Name { get; set; } 
    public int ID { get; set; }
}

In My controller there is an error which says: 'Object reference not set to an instance of an object.'

student student = new student(); 
var TaskQuery = from q in db.tblTasks
                select new
                {
                    TaskID = q.TaskID,                                
                };

qaTaskQuery = qaTaskQuery.OrderBy(x => x.TaskID );

foreach (var StudentTask_ in TaskQuery)
{
    student.Task.Add(new Task()  //Getting error
    {
        TaskID = StudentTask_.TaskID 
    });
}

Please tell me what is wrong with my code??

Alexei Levenkov
  • 94,391
  • 12
  • 114
  • 159
aruni
  • 2,474
  • 9
  • 38
  • 64

2 Answers2

3

Youy have not instantiated List<Task>:

student.Task = new List<Task>();
foreach (var StudentTask_ in TaskQuery)
{
   student.Task.Add(new Task()  //Getting error
   {
     TaskID = StudentTask_.TaskID 

   });
}

or you can do this in constructor of Student class:

public class student
{      
   public List<Task> Task { get; set; }      
   public string Name { get; set; } 
   public int ID { get; set; }

   public Student()
   {
     this.Task = new List<Task>();
   }
}
Ehsan Sajjad
  • 59,154
  • 14
  • 90
  • 146
2

you have to initialize your Task list before you add something to it:

public class student
{      
    public student()
    {
       Task = new List<Task>();
    }
    public List<Task> Task { get; set; }      
    public string Name { get; set; } 
    public int ID { get; set; }
}
Marian Ban
  • 8,020
  • 1
  • 30
  • 45