0

あるリスト項目を別のリストとして作成しようとしています。すべての項目に別のリストがあるリストが必要です。1 つのループのリストとして文字列を作成しました。次のループでは、範囲に基づいてデータを挿入するために、各項目を 1 つのリストとして必要とします。これを行う方法..??

私のコード:

List<string> l = new List<string>(s.Split(';'));
foreach (string item in l) 
{
    if (item.Contains("-"))
    {    
        List<string> parts = new List<string>();
        int min = Int32.Parse(parts[0]);
        int max = Int32.Parse(parts[1]);
        for (int m = min; m <= max; m++)
        {
            // add the value in i to the data
            cmd = "insert into quickcom values('" + destination + "','" + codes + "','" + prefix + "','" + rate + "','" + level + "','" + m + "','" + effective_date + "','" + company_id + "')";

            cmd = ReplaceSpecialCharacters(cmd);

            MySqlCommand sqlCmd = new MySqlCommand(cmd, sqlCon);
            var i = sqlCmd.ExecuteNonQuery();
            cmd = "";
        }
    }
    else
    {
        if (item.Contains(";"))
        {
            List<string> parts = new List<string>(s.Split(';'));

            cmd = "insert into quickcom values('" + destination + "','" + codes + "','" + prefix + "','" + rate + "','" + level + "','" + s + "','" + effective_date + "','" + company_id + "')";

            cmd = ReplaceSpecialCharacters(cmd);

            MySqlCommand sqlCmd = new MySqlCommand(cmd, sqlCon);
            var i = sqlCmd.ExecuteNonQuery();
            cmd = "";
        }
    }
}

助けて...thnx

4

5 に答える 5

1

各レコードとレコードの各項目を分割する区切り文字が 2 つある場合は、以下のように文字列リストのリストを直接取得できます。

string s = "a2-b2-c2-d2-e2;a3-b4-c2-d2-e2";
var list  = s.Split(';').Select(s1 => s1.Split('-').ToList()).ToList();
于 2013-04-17T11:06:55.220 に答える
0

これが必要かどうかはわかりませんが、次のタイプを使用して、項目が文字列のリストになっているリストを作成できます。List<List<string>>

于 2013-04-17T10:54:08.207 に答える
0

上記のコードは一部にすぎず、私のコンピューターでは機能しません。
そこで、コメントを書きます:
1. List parts = new List(); partsは、ここでは使用されていない変数です。2. ReplaceSpecialCharacters
の詳細を知りたい。 3. cmd = "insert into ... string.Format ("insert into ..{0}..{1}",para0,para1...) 4. List l = new List ( s .Split(';')); ここに文字列s の例をいくつかリストすると、非常に役立ちます。

于 2013-04-17T11:03:24.783 に答える
0

あなたが何を望んでいるList<List<string>>のかはわかりませんが、それが私が想定していることです:

var l = new List<string>(s.Split(';'));
var aggregatedList = new List<List<string>>();

foreach (var item in l)
{
    if (item.IndexOf("-") > -1)
    {
        var a = item.Split('-').Select(n => int.Parse(n)).ToArray();
        var parts = Enumerable.Range(a[0], a[1]-a[0]+1).Select(i => i.ToString()).ToList();
        aggregatedList.Add(parts);
    }
}
于 2013-04-17T11:07:07.227 に答える