![]() |
1
74
我的 MiscUtil 库中包含一个ProjectonComparer,用于构建IComparer<T>来自投影代表。制作一个ProjectionQualityComparer来做同样的事情需要10分钟的时间。 编辑:这是ProjectionQualityComparer的代码:
以下是一个示例用法:
|
![]() |
2
22
这里有一个简单的助手类,它应该做你想做的事情
你可以这样使用它:
|
![]() |
3
8
我发现在IEnumerable上提供额外的帮助程序是一种更干净的方法。 请参阅: this question 所以你可以:
如果正确定义了扩展方法 |
![]() |
4
7
为什么不像这样:
然后你可以做一些类似的事情(例如,在
这个
我现在才看到Sam Saffron的回答(与这个非常相似)。 |
![]() |
5
6
所以我知道这是一个解决你问题的方法,但当我发现我遇到了你在这里遇到的情况(组合列表和过滤重复项),并且Distinct需要一个我没有的IEquityComparer时,我通常会使用Concat->组->选择。 原来的
新
请注意,在GroupBy()中,您可以添加逻辑来创建混合密钥,例如:
以及在Select()中,如果你想指定结果项来自哪个列表,你可以说:
希望这能有所帮助! |
![]() |
6
5
这个项目做了类似的事情: AnonymousComparer - lambda compare selector for Linq ,它还具有LINQ标准查询运算符的扩展。 |
![]() |
7
1
对于小集合,您可以执行以下操作:
对于大型集合,您需要更高效的搜索,例如:
但是,在这里
您可以依赖优化器,将第二个解决方案缩短为:
但是,我还没有运行测试来了解它是否以相同的速度运行。而且那条线可能太聪明了,无法维护。 |
![]() |
8
1
在其他答案的基础上,创建一个通用的比较器是我最喜欢的。但我和林有点问题
这让我将Comparer实现为:
这样使用它:
请注意,由于被比较的信息被映射到
|
![]() |
9
-1
与其他答案一样,但更简洁的c#7:
那么:
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 8 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 8 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 8 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 8 月前 |