C# 不确定如何将我的项目添加到列表<;myType>;

C# 不确定如何将我的项目添加到列表<;myType>;,c#,C#,我有以下代码: public List<UserTrainingModules> GetTrainingModulesForUser(int userId) { List<UserTrainingModules> trainingModules = new List<UserTrainingModules>(); var modules = UserRepository.GetTrainingModulesForUser(userId); tra

我有以下代码:

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;
}
我的获取用户培训模块的方法:

   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;
      }
    }
  }
}
public List GetTrainingModulesForUser(int-userId)
{
使用(SqlConnection conn=newsqlconnection(ZincModelContainer.CONNECTIONSTRING))
{
使用(SqlCommand cmd=conn.CreateCommand())
{
conn.Open();
cmd.CommandType=System.Data.CommandType.StoredProcess;
cmd.CommandText=“[ZINK].[GetTrainingModulesForUser]”;
SqlParameter param=newsqlparameter(“@UserId”,System.Data.SqlDbType.Int);
参数值=用户ID;
cmd.Parameters.Add(param);
使用(SqlDataAdapter=newsqldataadapter(cmd))
{
DataTable dt=新的DataTable();
适配器填充(dt);
ICollection moduleDetail=new List();//不确定这里必须有什么
foreach(数据行中的数据行)
{
var moduleId=Convert.ToInt32(第[“TrainingModuleArtiFactsCommodules\u TrainingModuleArtifactId]”行);//此行不正确
var title=行[“title”];//也不正确
moduleDetail.Add(moduleId,title);//错误是没有重载方法“Add”接受2个参数
}
返回模块详细信息;
}
}
}
}
有人能告诉我我做错了什么吗? 谢谢

试试这个:

.AddRange
您的论点似乎是可枚举的

替换:

moduleDetail.Add(moduleId,title);
致:

public List GetTrainingModulesForUser(int-userId)
{
返回UserRepository.GetTrainingModulesForUser(userId);
}

像这样使用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;
    }
public List GetTrainingModulesForUser(int-userId)
{
列表培训模块=新列表();
var modules=UserRepository.GetTrainingModulesForUser(userId);
trainingModules.AddRange(modules);//它可以正常工作
返回培训模块;
}

你能告诉别人这个代码会发生什么吗?您得到了什么错误??使用
AddRange
,只要您的方法返回项目列表。另一方面,您不需要实例化modules变量,只要它将立即被覆盖,就可以执行
var trainingModules=UserRepository.GetTrainingModulesForUser(userId)
moduleDetail.Add(new UserTrainingModules {userTrainingModuleId  = moduleId, title = title});
public List<UserTrainingModules> GetTrainingModulesForUser(int userId)
{
  return UserRepository.GetTrainingModulesForUser(userId);
}
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;
    }