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