1

大家好,我有一个表单集合的字符串 [],看起来像这样

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

此 formcollection 中的值如下所示

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 回答