计算类似id的分数之和

时间:2014-09-20 13:50:16

标签: c# asp.net

我正在使用C#语言在asp.net中创建一个网站。

我有9个清单。每个列表都有2列:ID为int类型,Value为int16类型。 ID是唯一的。

  1. 我想用特殊公式计算每个列表中每个ID的得分。例如,您认为这是计算所有分数后的结果:
  2. id,列表编号,值,得分

    100,1,2,10

    300,1,2,9

    200,1,4,11

    100,2,3,10.5

    200,2,3,10

    ...

    1. 我想计算每个id的分数总和。我的意思是,在我的例子中,身份证号码100的最终得分是:10 + 10.5 + ....
    2. 你建议我这样做吗?我对第一阶段的想法是在其中创建一个列表和存储ID,列表名称,值和分数(如上表所示),但我不知道如何进行第2阶段。

      如果你能帮助我,我将不胜感激。 非常感谢

1 个答案:

答案 0 :(得分:0)

我已根据您的要求实施了控制台应用代码。 这是工作代码。

首先按ID执行分组,然后汇总每组ID的分数 最终结果是ID& amp;此ID的分数总和。

using System;
using System.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            var records = new[] {
                                new Records{ID=100,ListNum=1,Value=2,Score=10},
                                new Records{ID=300,ListNum=1,Value=2,Score=9},
                                new Records{ID=200,ListNum=1,Value=4,Score=11},
                                new Records{ID=100,ListNum=2,Value=3,Score=10.5},
                                new Records{ID=200,ListNum=2,Value=3,Score=10}
                               };
            var idScoreSumDictionary = records
                             .GroupBy(rec => rec.ID)
                             .ToDictionary(
                                 rec => rec.Key, 
                                 rec => rec.Sum(x => x.Score)
                             );
           foreach (var item in idScoreSumDictionary)
           {
                Console.WriteLine("ID: {0}",item.Key);
                Console.WriteLine("Its Score Sum: {0}",item.Value);
           }
        }
    }

    class Records
    {
        public int ID { get; set; }
        public int ListNum { get; set; }
        public int Value { get; set; }
        public double Score { get; set; }
    }
}