如何循环收集并保存到db

时间:2013-01-08 13:01:31

标签: c#

通过循环遍历我拥有的两个集合,我遇到了执行数据库的问题。请注意,这只是一个例子。

第一个系列包括:性别 - 男性,女性 第二个系列包括:名字 - 约翰,詹姆斯,迈克,斯泰西,宝拉

我用过循环例如:

for (int i = 0; i < genders.count; i++)
{
    for (int j = 0, j < names.count; j++)
    {
        //call to stored procedure there
        //parameters
        //execute
    }
}

有人可以建议如何区别对待吗?

2 个答案:

答案 0 :(得分:3)

我没有看到问题,但如果你问你的方法是否可以改进,是的。

我只想使用具有这些属性的类(包含性别)。

class Person
{
    public bool IsFemale { get; set; }
    public string Name { get; set; }
}

现在,您可以创建单个集合,例如List<Person>并循环播放。

var persons = new List<Person>() { 
    new Person{IsFemale=false, Name="john"},new Person{IsFemale=false, Name="james"},
    new Person{IsFemale=true, Name="stacy"},new Person{IsFemale=true, Name="paula"}
};

foreach(Person p in persons)
{
    //call to stored procedure there
    //parameters
    //execute
}

编辑:如果你有ADO.NET部分的问题,这是一个例子:

using (var con = new SqlConnection(connectionString))
using (var cmd = new SqlCommand("StoredProcedureName", con))
{
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@Gender", typeof(string));
    cmd.Parameters.Add("@Name", typeof(string));
    con.Open();
    foreach (var person in persons)
    {
        cmd.Parameters["@Gender"].Value = person.IsFemale ? "female" : "male";
        cmd.Parameters["@Name"].Value = person.Name;
        cmd.ExecuteNonQuery();
    }
}

答案 1 :(得分:0)

首先,为什么不创建自己的类?

class Person
{
    private String name;
    private String sex;

    public Person(String name, String sex)
    {
        this.name = name;
        this.sex = sex;
    }

    public String Name
    {
        get { return name; }
        set { name = value; }
    }

    public String Sex
    {
        get { return sex; }
        set { sex = value; }
    }
}

然后创建一个人员列表

List<Person> people = new List<Person>();
people.add(new Person("Ashley", "Male"));

然后是一个foreach循环...

foreach(Person p in people)
{
Console.WriteLine(p.Name + " " + p.Sex);
}

你的问题很模糊,但这就是我要做的......