2012-11-15 29 views
0

我有這樣的代碼:不知道如何添加我的項目列出<myType>

public List<UserTrainingModules> GetTrainingModulesForUser(int userId) 
{ 
    List<UserTrainingModules> trainingModules = new List<UserTrainingModules>(); 

    var modules = UserRepository.GetTrainingModulesForUser(userId); 
    trainingModules.Add(modules); //not correct error is "invalid arguments" 
    return trainingModules; 
} 

我喜歡的類型UserTrainingModules:

public class UserTrainingModules 
    { 
    public virtual int userTrainingModuleId { get; set; } 
    public virtual string title { get; set; } 
    } 

我的方法GetTrainingModulesForUser:

public List<UserTrainingModules> GetTrainingModulesForUser(int userId) 
{ 
    using (SqlConnection conn = new SqlConnection(ZincModelContainer.CONNECTIONSTRING)) 
    { 
    using (SqlCommand cmd = conn.CreateCommand()) 
    { 
     conn.Open(); 
     cmd.CommandType = System.Data.CommandType.StoredProcedure; 
     cmd.CommandText = "[Zinc].[GetTrainingModulesForUser]"; 

     SqlParameter param = new SqlParameter("@UserId", System.Data.SqlDbType.Int); 
     param.Value = userId; 
     cmd.Parameters.Add(param); 

     using (SqlDataAdapter adapter = new SqlDataAdapter(cmd)) 
     { 
     DataTable dt = new DataTable(); 
     adapter.Fill(dt); 

     ICollection<UserTrainingModules> moduleDetail = new List<UserTrainingModules>(); //not sure what i must have here 
     foreach (DataRow row in dt.Rows) 
     { 
      var moduleId = Convert.ToInt32(row["TrainingModuleArtifactScormModules_TrainingModuleArtifactId"]); //this line not correct 
      var title = row["Title"]; //not correct either 
      moduleDetail.Add(moduleId,title); //error is no overload method "add" takes 2 arguments 
     } 

     return moduleDetail; 
     } 
    } 
    } 
} 

誰能告訴我在做什麼錯誤? 感謝

+1

你能告訴別人什麼,此代碼會發生什麼?你遇到了什麼錯誤?? –

+0

使用'AddRange',只要你的方法返回項目列表。從另一方面來說,你不需要實例化模塊變量,只要它會被立即覆蓋,你可以做'var trainingModules = UserRepository.GetTrainingModulesForUser(userId)' – Giedrius

回答

1

替換:

moduleDetail.Add(moduleId,title); 

要:

moduleDetail.Add(new UserTrainingModules {userTrainingModuleId = moduleId, title = title}); 
1

試試這個:

.AddRange 

你的論點似乎是一個枚舉

0
public List<UserTrainingModules> GetTrainingModulesForUser(int userId) 
{ 
    return UserRepository.GetTrainingModulesForUser(userId); 
} 
0

使用的AddRange這樣

public List<UserTrainingModules> GetTrainingModulesForUser(int userId) 
    { 
     List<UserTrainingModules> trainingModules = new List<UserTrainingModules>(); 

     var modules = UserRepository.GetTrainingModulesForUser(userId); 
     trainingModules.AddRange(modules); // It would work fine 
     return trainingModules; 
    } 
相關問題