Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何计算集合中某个值的百分比或排名?_C#_Xml_Linq_Algorithm_Percentile - Fatal编程技术网

C# 如何计算集合中某个值的百分比或排名?

C# 如何计算集合中某个值的百分比或排名?,c#,xml,linq,algorithm,percentile,C#,Xml,Linq,Algorithm,Percentile,我在一个XML文件中收集了大约8000个测试分数。 使用Linq和C#,计算特定考试分数百分位数的最有效方法之一是什么 我的重点是效率。那么,推荐的方法是什么?我也在寻找合适的内置Linq或C#函数,建议用于此计算。有所谓的百分位()或百分位吗 听起来,在你确认自己需要担心效率之前,你就开始担心效率了 我会采取以下方法: 使用LINQ to XML(作为.NET中最简单的XML API)将XML文件加载到内存中 将分数转换为整数列表(或任何分数类型) 您现在可以很容易地找到总数 使用带有谓词的

我在一个XML文件中收集了大约8000个测试分数。 使用Linq和C#,计算特定考试分数百分位数的最有效方法之一是什么


我的重点是效率。那么,推荐的方法是什么?我也在寻找合适的内置Linq或C#函数,建议用于此计算。有所谓的百分位()或百分位吗

听起来,在你确认自己需要担心效率之前,你就开始担心效率了

我会采取以下方法:

  • 使用LINQ to XML(作为.NET中最简单的XML API)将XML文件加载到内存中
  • 将分数转换为整数列表(或任何分数类型)
  • 您现在可以很容易地找到总数
  • 使用带有谓词的
    Count
    找出有多少分数低于您的“目标”分数
如果你需要检查多个分数,你显然只需要重复最后一步


我的第一次优化尝试(针对多个检查)是对列表进行排序,这样您就可以进行二进制搜索来查找每个分数的排名。不过,我只会在基准测试之后才这么做。

在你确认需要担心效率之前,你似乎在担心效率

我会采取以下方法:

  • 使用LINQ to XML(作为.NET中最简单的XML API)将XML文件加载到内存中
  • 将分数转换为整数列表(或任何分数类型)
  • 您现在可以很容易地找到总数
  • 使用带有谓词的
    Count
    找出有多少分数低于您的“目标”分数
如果你需要检查多个分数,你显然只需要重复最后一步


我的第一次优化尝试(针对多个检查)是对列表进行排序,这样您就可以进行二进制搜索来查找每个分数的排名。不过,在进行基准测试之后,我才这么做。

好吧,这里最昂贵的事情是将xml解析为inmemory对象。内存中数字的计算速度非常快。8000条记录并不多。只需使用标准方法。将xml映射到某些类,然后进行计算,或者只需在一个Linq2XML查询中执行所有操作。能否显示一个示例xml片段以及您感兴趣的值?@DarinDimitrov 8823…这里最昂贵的事情是将xml解析为inmemory对象。内存中数字的计算速度非常快。8000条记录并不多。只需使用标准方法。将您的xml映射到某些类,然后进行计算,或者只需在一个Linq2XML查询中执行所有操作。能否显示一个示例xml片段以及您感兴趣的值?@DarinDimitrov 8823。。。