C# – Stored Procedures in LINQ-to-SQL

clinqsql serverstored-procedures

I have a stored procedure in a SQL Server database that returns a list of results. This stored procedure is exposed in the LINQ-to-SQL dbml file. I then try to call this stored procedure as such:

public List<MyObject> GetObjects()
{
  List<MyObject> objects = new List<MyObject>();
  using (DatabaseDataContext context = new DatabaseDataContext())
  {
    objects = context.GetObjectsFromDB();  // This is my problem line
  }
  return objects;
}

My problem is, I don't know how to convert the results of the stored procedure to a List<MyObject>. context.GetObjectsFromDB returns a System.Data.Linq.ISingleResult<sprocName>. How do I convert the result of the stored procedure to my List of strong pre-defined type?

Thank you!

Best Answer

Try this,

public List<MyObject> GetObjects()
{

 using (DatabaseDataContext context = new DatabaseDataContext())
 {
 var objects = context.GetObjectsFromDB();  
 return new  List<MyObject>(objects);
 }
}

Updated: By using explicit casting it can be done like this

public List<MyObject> GetObjects()
{  
 using (DatabaseDataContext context = new DatabaseDataContext())
 {
  List<MyObject> objects = (List<MyObject>)context.GetObjectsFromDB();  
  return objects;
 }
}