- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个项目集合,这里是:
ID ELECT1 ELECT2
1 FDI AED
2 BPG AED
3 AED FDI
4 FDI AED
5 GPH AED
6 AED BPG
7 GPH FDI
我想将 elect1 和 elect2 分组,然后输出 2 个最受欢迎的,就像这些项目被选择了 3 次
FDI AED
AED FDI
FDI AED
然后第二个最受欢迎的组合是
AED BPG
BPG AED
所以输出是
2 Most popular combinations are
FDI AED
AED BPG
我已经编写了一些代码,但我不知道如何才能做到这一点
var groups = cStudent.GroupBy(x => new { x.elective1, x.elective2 });
foreach (var group in groups)
{
Console.WriteLine("{0} / {1}:", group.Key.elective1, group.Key.elective2);
foreach (var item in group)
{
Console.WriteLine(" {0} ({1})", item.elective1, item.elective2);
}
}
这就是我用代码得到的结果,它已经完成一半了,只是不知道如何完成。 IMAGE
最佳答案
恕我直言,解决此问题的最简洁方法是实现自定义相等比较器,它提供解决当前问题所需的相等语义:
class IgnoreElectiveOrderStudentEqualityComparer
: IEqualityComparer<Student>
{
public bool Equals(Student x, Student y)
=> (x.ElectiveOne == y.ElectiveOne &&
x.ElectiveTwo == y.ElectiveTwo) ||
(x.ElectiveOne == y.ElectiveTwo &&
x.ElectiveTwo == y.ElectiveOne);
public int GetHashCode(Student obj)
=> obj.ElectiveOne.GetHashCode() ^
obj.ElectiveTwo.GetHashCode();
}
现在您只需使用 GroupBy
和自定义比较器即可:
var mostPopular =
students.GroupBy(s => s,
new IgnoreElectiveOrderStudentEqualityComparer())
.OrderByDescending(g => g.Count())
.Select(g => new
{
g.Key.ElectiveOne,
g.Key.ElectiveTwo
})
.Take(2);
关于C# 获取集合中最流行的 2 项组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53436744/
我想知道是否有一个“标准”类(JDK、Guava、Apache *)可以帮助延迟初始化/计算模式? 我正在考虑这样的事情(现在让我们忽略同步): abstract class Lazy { T i
我要创建一个从 html 到某种格式的转换器。我正在考虑使用中间格式 XML(XSL-FO)。 我的问题:如果没有那么多应用程序渲染它,为什么 FO 格式很受欢迎? 最佳答案 我很清楚 CSS 和 X
我发现了 IDEF就在昨天,我立即想知道为什么它不比 UML 更流行。从documents来看,IDEF 至少与 UML 一样适用于软件建模,但与 UML 相比,它已经成熟和稳定了大约 30 年。 这
首先,对于版主来说,如果这不是发布此内容的正确位置,请不要生气:)。 我想知道是否有类似 TodoMVC 的东西适用于 Django、Rails、Symfony 等流行的 Web 框架。 如果没有这样
在我的应用程序中,我有一个 UIScrollView,其中包含 N 个可以向左或向右滑动的 ViewController 在每个 Controller 中,我希望能够推送新的 viewControll
我是一名优秀的程序员,十分优秀!