1

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

我的重点是效率。那么推荐的方法是什么?我也在寻找为此计算推荐的适当的内置 Linq 或 C# 函数。有什么叫做 Percentile() 或 TopPercent 的东西吗?

4

1 回答 1

7

听起来您在验证是否需要担心效率之前就担心效率。

我会采取以下方法:

  • 使用 LINQ to XML 将 XML 文件加载到内存中(作为 .NET 中最简单的 XML API)
  • 将分数转换为整数列表(或任何分数类型)
  • 您现在可以轻松找出总数
  • 与谓词一起使用Count以找出低于“目标”分数的分数

如果你需要检查多个分数,你显然需要重复最后一步。

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

于 2012-02-05T08:26:25.207 回答