-5

私が持っている 2 つのコレクションをループしてデータベースを実行する際に問題が発生しています。これは単なる例であることに注意してください。

第 1 コレクションの内容: 性別 - 男性、女性 第 2 コレクションの内容: 名前 - ジョン、ジェームズ、マイク、ステイシー、ポーラ

たとえば、 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 に答える