问题标签 [icomparer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linq-to-entities - 如何为 Linq to Entities OrderBy() 实现与自定义 IComparer 的等效功能?
如何为 Linq to Entities OrderBy() 实现与自定义 IComparer 的等效项?
正如MSDN 文档所述,Linq to Entities 不支持自定义比较器:
LINQ to Entities 支持大多数 LINQ 排序方法,但接受 的方法除外
IComparer
,因为比较器无法转换为数据源。有关详细信息,请参阅LINQ to Entities 查询中的标准查询运算符。
javascript - 如何传递函数来比较项目?
我想将一个比较器传递给一个函数,但不确定这是否可以通过 Javascript 实现。C# 中有一个 IComparer 概念可以做到这一点。这可以用Javascript完成吗?
vb.net - 将 Dictionary 转换为 SortedDictionary 后为自定义对象实现 iComparer
我在实现 IComparer 方法时遇到了麻烦。本质上,我想比较两个自定义对象的属性(属性是整数类型)。
dE 是 Dictionary(Of String, customObj) prTabIndex 是 customObj 的一个属性,并且是 Integer 类型(所有示例都适用)
经过一番搜索后,我发现这个线程建议了 3 件事:List 方法、利用 LINQ 和使用一些 C# 3.0 特性。但是,在 vb 中,不确定他们最好的方法是什么。
我尝试了三种不同的方法:
...滚动我自己的 IComparer 实现:
...对列表进行排序(我认为这是可行的——使这个线程有点学术性)。
...或将 lambda 函数直接合并到到 SortedDictionary 的转换中:
请注意,VS2008 已在 'dE.ToDictionary...' 下划线(到行尾),并根据我将鼠标悬停的位置给我两条消息:
1)“扩展方法'签名'中类型参数的数据类型作为'System.Linq.Enumerable中定义的签名无法从这些参数中推断出来。明确指定数据类型可能会纠正此错误。看到将鼠标悬停在“ToDictionary”上。
2) 嵌套函数与委托“签名”的签名不同。在“ToDictionary”之后悬停在任何内容上时出现。
诚然,我是 lambda 函数的新手。
Q1)我在每个实现中离我有多远?
Q2) 哪一个是计算成本最低的?为什么?
Q3) 哪一个是计算上最昂贵的?为什么?
温暖的问候,
-sf
c# - Is it possible in C# to provide an IComparer implementation and somehow have it "compiled" into the application at runtime?
Hi everyone I am not sure if what I want to do is even remotely possible but I am going to do my best to explain it and would really appreciate any suggestions / ideas,
Imagine I have :-
These classes allow the user to create user defined attributes and select a pre-defined sort algorithm to sort the values In the simplistic case, I can do AttributesValues.Sort() using one of the comparers that I have created and compiled in source code which has been chosen by the user. This is fine when the comparison is known in advance such as a simple ascending alphabetical sort for example.
However, there are some circumstances where more logic is needed and it is not known in advance. For example, the string "4DFG5ET" might codify a date that needs to be sorted and there may be some other attribute with similar logic and so on.
If possible I don't want to keep writing the IComparer implementations and would love for it to be possible that somehow I could define the IComparer implementation in a text box or file at runtime and it would be somehow compiled in the program or persisted then available in the selction of comparisons that could be used to sort an attribute.
Does anyone have any suggestions on how to approach this?
Please ask if you would like me to clarify something as I know it is a slightly obscure question.
Many thanks in advance
Alex
vb.net - 在 VB 中实现泛型 IComparer
我正在尝试创建一个实现我自己的类“Stellungen”的通用 IComparer 的类(它转换为位置,例如在国际象棋或跳棋板上)。
这就是我得到的:
问题是:在函数内部,我无法访问班级的任何字段。如果我从 x 开始。Intellisense 只会给我 .Equals、.GetHashCode - 你在类型上而不是在实例上获得的方法。Visual Studio 10 也强调了这一点,在函数的定义中,位“x as Stellung”和“y as Stellung”用浅蓝色书写,表示它是一种类型,而不是实际对象。
所以……我该怎么办??我如何访问我想在课堂上比较的东西?谢谢!
c# - 按第二列对 Windows.Forms.ListView 进行排序
我想按第二列的内容(可以是“在线”或“离线”)对 ListView 项目进行排序。排序只会在代码中的一个特定位置进行,因此解决方案不必很灵活。不仅如此,它应该易于实现,并且不需要对应用程序的其余部分进行重大更改。
我试图让类实现 IComparer 并将其分配给 listView.ListViewItemSorter,但它对我不起作用。
代码示例:
c# - 使用 IComparer 对 xml 中的节点进行排序/排序
我需要对 xml 中的节点进行排序。我有以下代码成功地按字母顺序排列它们。但是,尽管允许使用字符串,但大部分数据都是数字的。我有一个 IComparer 设置,可以正确排序数据,因为我希望它出现在其他地方。
我已经找到了如何在方法调用中使用 IComparer,.OrderBy(x => x, new CustomComparer())
但是,我还没有弄清楚如何让它与 xml 一起使用。从我在网上阅读的内容来看,我似乎无法从查询语法中调用 IComparer。
c# - IComparer 和 SortedDictionary 可能存在的问题
我正在尝试创建一个SortedDictionary
其键是代表文件/文件夹路径的字符串。我正在尝试根据路径深度对该字典进行排序。我的标准只是检查每个路径中的斜杠数量,并将斜杠最多的路径放在字典的开头。
我的问题是,对于一些我无法检测到的奇怪问题,字典可以有多个完全相同的键。经过数小时的调试后的问题似乎是“有时”我的实现在调用方法或向字典添加新值时IComparer
不会遍历字典中的所有条目。ContainsKey
我没有得到例外或任何东西。
这是我的代码..(有点长):
在 Main() 的末尾_dExcludedPaths
将有两个完全相等的键。
有人可以帮助理解这里发生了什么以及字典中怎么可能有重复的键?
谢谢
c# - IComparer 按不同标准排序
我有一个ListView
,我正在尝试对它们进行排序,BackColor
首先是带有红色的项目,然后是带有ForeColor
红色的项目,最后是其余的项目,但所有这些都应该在他们的组中按名称排序。
我写了这段代码,但我仍然把大块相同的项目分开:
c# - 使用 Linq 和 IComparer 订购 ObservableCollection
我想按字母顺序排列 ObservableCollection,因为我不想创建另一个绑定。我已经看到我们可以使用 Linq 和 OrderBy 方法。我还想使用个人 IComparer 因为我将不得不组织复杂的数据(列表到其他列表中),但是 VS 告诉我我不能使用我自己的比较器:
(给你错误的链接,因为我的VS是法语的)
http://msdn.microsoft.com/en-gb/library/hxfhx4sy%28v=vs.90%29.aspx
有任何想法吗 ?
还有我自己的比较器(已经过测试)
感谢您的回答。无论如何,我还有另一个问题。正如迈克尔所说,我使用了一个更复杂的比较器,但用于另一个实体。该实体以分层树的形式显示,并且一个对象可能包含相同类型的其他对象的列表。
我无法测试我的 GraphicObject,因为我无权访问数据库(目前没有对象)。通过对我的 VideoEntity 的测试,我的 ObservableCollection 似乎没有按照我想要的方式排序(我创建了另一个)。我想按字母顺序颠倒它,但它不起作用。
PS:顺便说一句,我正在处理一个 DependancyProperty。这是正确的方法吗?(我是 WPF 的新手)