相关疑难解决方法(0)

在IEqualityComparer中包装委托

几个Linq.Enumerable函数需要一个IEqualityComparer<T>.是否有一个方便的包装类适应delegate(T,T)=>bool实现IEqualityComparer<T>?编写一个很容易(如果你忽略了定义正确的哈希码的问题),但我想知道是否有开箱即用的解决方案.

具体来说,我想对Dictionarys 进行集合操作,仅使用Keys来定义成员资格(同时根据不同的规则保留值).

.net linq delegates

125
推荐指数
7
解决办法
4万
查看次数

使用lambda表达式代替IComparer参数

是否可以使用C#在方法调用中将lambda表达式作为IComparer参数传递?

例如

var x = someIEnumerable.OrderBy(aClass e => e.someProperty, 
(aClass x, aClass y) => 
  x.someProperty > y.SomeProperty ?  1 : x.someProperty < y.SomeProperty ?  -1 : 0);
Run Code Online (Sandbox Code Playgroud)

我不能完全把它编译成所以我猜不是,但看起来lambda和匿名代表之间的这种明显的协同作用让我觉得我必须做一些愚蠢的错误.

TIA

c# lambda icomparer

61
推荐指数
2
解决办法
3万
查看次数

为什么不在.NET中允许就地接口实现?

要么我缺少某些东西,要么.NET不支持Java的功能.我希望能够避免创建一个小类只是为了实现一个小接口.例如,LINQ的Except方法需要IEqualityComparer.所以我不得不写一个实现接口的小类.但是在Java中我可以简单地new IEqualityComparer() { //interface declarations }完成它并完成它.所以有什么问题?

这与这篇文章有些相关:

C#匿名类可以实现一个接口吗?.

附加:此刻,我为Equals和添加了覆盖GetHashCode.

.net c# anonymous interface in-place

13
推荐指数
1
解决办法
2575
查看次数

标签 统计

.net ×2

c# ×2

anonymous ×1

delegates ×1

icomparer ×1

in-place ×1

interface ×1

lambda ×1

linq ×1