2015-10-28 2 views
0

У меня есть метод, который вызывает хранимую процедуру и возвращает список объектов. Я не уверен, как добавить результат из хранимой процедуры в список объектов. Я попытался использовать модель. Добавить, но в любом случае я использую его, я получаю ошибку. Я определяю место, в котором мне нужна помощь внутри кода.Возврат Список объектов из данных возвращенной хранимой процедуры C#

Это мой код:

public List<Models.Type> get_Type(string Type_Group) 
    { 
     string connectionName = getConnectionStr(); 
     List<Models.Type> model = null; 

     string myConnection = System.Configuration.ConfigurationManager.ConnectionStrings[connectionName].ToString(); 
     SqlDatabase db = new SqlDatabase(myConnection); 

     using (DbCommand command = db.GetStoredProcCommand("LA_Get_Type")) 
     { 
      db.AddInParameter(command, "Type_Group", DbType.String, Type_Group); 

      var result = db.ExecuteReader(command); 

      try 
      { 
       if (result.FieldCount == 0) 
        model = null; 
       else 
       { 
        while (result.Read()) 
        { 
        model = new List<Models.Type>() 
         { 

    //This is the place I don't know I tried model.Add but not sure what 
    to have after. 
    This code is when I have returning just 1 object but I want to 
    return list of objects       


          typeID = Convert.ToInt32(result["typeID"].ToString()), 
          type_group = result["type_group"].ToString(), 
          type_value = result["type_value"].ToString(), 
          type_desc = result["type_desc"].ToString(), 
          type_sort = Convert.ToInt32(result["type_sort"].ToString()) 
         }; 
        } 
       } 
      } 
      catch (Exception ex) 
      { 
      } 
      result.Close(); 
      return model; 
     } 
    } 

и это мой объект:

public class Type 
    { 

    public int typeID { get; set; } 
    public string type_group { get; set; } 
    public string type_value { get; set; } 
    public string type_desc { get; set; } 
    public int type_sort { get; set; } 

    } 
+0

Привет, Алма, не могли бы вы добавить подробные сведения об ошибке ?, Примечание. Переместите инициализатор списка вне метода while, если вы получаете более одного результата, иначе вы бы инициализировали пустой список для каждой записи, и он вернется 1 всегда всегда – darkndream

+0

https://msdn.microsoft.com/en-us/library/haa3afyz(v=vs.110).aspx может быть полезным примером, когда хранимая процедура возвращает несколько записей. –

+0

@JBKing Я использую вид другого способа, чем эта страница, которую вы предоставляете, поскольку я использую корпоративную библиотеку. – Alma

ответ

1

Изменить

   while (result.Read()) 
       { 
       model = new List<Models.Type>() 
        { 

//This is the place I don't know I tried model.Add but not sure what 
to have after. 
This code is when I have returning just 1 object but I want to 
return list of objects       


         typeID = Convert.ToInt32(result["typeID"].ToString()), 
         type_group = result["type_group"].ToString(), 
         type_value = result["type_value"].ToString(), 
         type_desc = result["type_desc"].ToString(), 
         type_sort = Convert.ToInt32(result["type_sort"].ToString()) 


        }; 
       } 

к чему-то вроде этого:

   model = new List<Models.Type>(); 
       while (result.Read()) 
       { 
        Models.Type aModel = new Model(){ 
         typeID = Convert.ToInt32(result["typeID"].ToString()), 
         type_group = result["type_group"].ToString(), 
         type_value = result["type_value"].ToString(), 
         type_desc = result["type_desc"].ToString(), 
         type_sort = Convert.ToInt32(result["type_sort"].ToString()) 
        }; 
        model.Add(aModel); 
       } 

Обратите внимание, что я создаю новый объект для каждого результата, а затем добавляю его один за другим в список.

+0

Большое вам спасибо, что именно так я и искал. – Alma

Смежные вопросы