2012-11-15 50 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; 
    } 
相关问题