-5

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

第一个系列包括:性别 - 男性、女性 第二个系列包括:名字 - john、james、mike、stacy、paula

例如,我使用了 for 循环:

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

谁能建议如何以不同的方式做到这一点?

4

2 回答 2

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();
    }
}
于 2013-01-08T13:06:44.143 回答
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);
}

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

于 2013-01-08T13:08:21.073 回答