简体   繁体   English

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

[英]Not sure how to add my items to List<myType>

i have this code: 我有这个代码:

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;
}

my type UserTrainingModules: 我的类型UserTrainingModules:

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

my method GetTrainingModulesForUser: 我的方法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;
      }
    }
  }
}

can someone tell me what i am doing wrong please? 有人能告诉我,我做错了吗? thanks 谢谢

try this: 尝试这个:

.AddRange

your argument seems to be an enumerable 你的论点似乎是一个可以枚举的

Replace: 更换:

moduleDetail.Add(moduleId,title);

To: 至:

moduleDetail.Add(new UserTrainingModules {userTrainingModuleId  = moduleId, title = title});
public List<UserTrainingModules> GetTrainingModulesForUser(int userId)
{
  return UserRepository.GetTrainingModulesForUser(userId);
}

Use AddRange like this 像这样使用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;
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM