1

こんにちは、私はこのようなフォームコレクションの文字列[]を持っています

string[] formCollSkuOptionValueId=form.GetValues("txtskuopvaluetid");
string[] formCollSkuOptionNames=form.GetValues("txtSkuoptionName");
string[] formCollSkuOptionValues=form.GetValues("txSkuoptionvalues");

このフォームコレクションの値は次のようになります

formCollSkuOptionNames={color,color,color,size,size,size,fit,fit}
formCollSkuOptionValueId={37,38,39,40,41,42,50,51}
formCollSkuOptionValues={Red,Black,Blue,X,Xl,XXl,Regular,Fit}

私がしなければならないことは、formCollSkuOptionValuesオプション名がこのように同じであるところを連結する必要があるということです

結果をこのように配列にしたい

string[] SkuOptionValueId={37_38_39},{40_41_42},{50_51}
string[] SkuOptionValues={Red_Black_Blue},{X_Xl_XXl},{Regular_Fit}

これを行うにはどうすればよいですか、これを行うのを手伝ってくれる人はいますか?

string SkuOptionName = string.Empty;
string SkuOptionValues = string.Empty;
string SkuOptionValueId = string.Empty;
for (int i = 0; i < formCollSkuOptionValues.Length; i++)
{
    int count = 0;
    arrays.Clear();
    SkuOptionName = formCollSkuOptionNames[count];
    if (count != 0)
    {
        if (SkuOptionName == formCollSkuOptionNames[i])
        {
            SkuOptionValues = SkuOptionValues + formCollSkuOptionValues[i] + ",";
            SkuOptionValueId = SkuOptionValueId + formCollSkuOptionValueId[i] + ",";
        }
        arrays.Add(SkuOptionValues);
        count++;
    }
    SkuOptionValues = SkuOptionValues + formCollSkuOptionValues[i] + ",";
    SkuOptionValueId = SkuOptionValueId + formCollSkuOptionValueId[i] + ",";
    //str.Remove(str.IndexOf(','));
}
4

1 に答える 1

0

あなたはそれを利用して次のlinqように書くことができます:

var namesAndIndexes = formCollSkuOptionNames.Select((e, i) => new { Name = e, Index = i }).ToList();

var nameValueIds = namesAndIndexes.Select(e => new { ValueId = formCollSkuOptionValueId[e.Index], Name = e.Name});
var nameValues = namesAndIndexes.Select(e => new { Value = formCollSkuOptionValues[e.Index], Name = e.Name });

var groupNameValueIds = nameValueIds.GroupBy(e => e.Name, a => a.ValueId);
var groupNameValues = nameValues.GroupBy(e => e.Name, a => a.Value);

var skuOptionValueId = groupNameValueIds.Select(e => e.Aggregate((a, b) => a + "_" + b)).ToArray();
var skuOptionValues = groupNameValues.Select(e => e.Aggregate((a, b) => a + "_" + b)).ToArray();

それは現代的な書き方だと思います。忘れforif:)

于 2012-12-31T22:18:24.353 に答える