【问题标题】:how to combine same elements and sum their values in lists in C# [closed]如何在 C# 的列表中组合相同的元素并将它们的值相加 [关闭]
【发布时间】:2014-06-06 19:41:16
【问题描述】:

我有两个大小相同的列表。第一个列表有一些标题,第二个列表也有第一个列表元素的值。例如;

var first = {"1", "saka", "2", "1", "1", "3", "saka", "1", "stack", "3"};
var second = {20,     23,  25,  30,  20,  15,     16,  61,      34,  35};

我想要 2 个新列表,其中包含上述相同元素的组合及其总和。

var F = {"1", "saka", "2", "3", "stack"}
var S = {131,     39,  25,  50,      34}

我该怎么做?

【问题讨论】:

  • 到目前为止你尝试过什么?您在这些尝试中遇到了什么问题?
  • 你有没有尝试过?
  • 你知道所有标题的名字吗?
  • 不,我不知道任何标题。它们将在运行时看到。
  • @RustyH,作业题没有错,只要努力做题。

标签: c# list


【解决方案1】:
 private void hereIsYourAnswer()
    {
        string [] first = { "1", "saka", "2", "1", "1", "3", "saka", "1", "stack", "3" };
        int [] second = { 20, 23, 25, 30, 20, 15, 16, 61, 34, 35 };

        List<String> F = new List<string>();
        List<int> S = new List<int>();

        for (int i = 0; i < first.Length; i++)
        {
            if (F.Contains(first[i]))
                S[F.IndexOf(first[i])] += second[i];
            else
            {
                F.Add(first[i]);
                S.Add(second[i]);
            }

        }

        for (int i = 0; i < S.Count; i++)
            MessageBox.Show(F[i] + " = " + S[i].ToString());

                //Output
                //1=131
                //saka=39
                //2=25
                //3=50
                //stack=34


    }

【讨论】:

  • 非常感谢。不过我也需要头衔。
  • 这就是你的 stringList 是什么。 stringList 的索引与 addedList 中的总和索引相关
  • 抱歉,我看不到字符串列表。感谢您的回答。 linq 解决方案可以更快吗?
  • 不熟悉 linq 所以我不知道。这就是你要找的东西,对吗?
  • LINQ 解决方案将涉及压缩两个列表,按“第一个”列表中的值对结果元组进行分组,对每个组进行平均,并将每个分组平均值投影到具有组名和平均值的元组中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多