如何在c#中向字符串数组添加formcollection

时间:2012-12-31 18:32:19

标签: arrays string c#-4.0

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

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(','));
}

1 个答案:

答案 0 :(得分: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:)