问题标签 [morelinq]
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 - 让 MoreLinq MaxBy 函数返回多个元素
我有一种情况,我有一个具有 int 属性的对象列表,我需要检索该属性值最高的 3 个对象。MoreLinq MaxBy 函数非常方便查找单个最高值,但有没有办法可以使用它来查找 3 个最高值?(不一定具有相同的值)。我目前使用的实现是使用 MaxBy 找到单个最高的,从列表中删除该对象并再次调用 MaxBy 等,然后在找到最高的 3 个后将对象添加回列表中。想想这个实现就让我畏缩,我真的很想找到一个更好的方法。
c# - MoreLinq maxBy vs LINQ max + where
我正在使用EF5
扩展MoreLinq
,在生产中测试我的程序(非常大的数据库)时,我发现该行:
需要很长时间(RecordTime
是非索引datetime
)
那是因为MaxBy
总是在客户端运行(并且首先从数据库中获取所有记录)?
c# - Linq Where 子句与条件语句相结合
我在这里有点问题。我有一个 Linq 语句,可以过滤数据库中的对象列表。
假设我有以下元素列表(每个“{...}”代表列表中的一个对象):
我有两个参数,一个是“StandardPriceTable”,另一个是“CurrentUserPriceTable”。在我的情况下,这些参数如下:
现在我想要实现的是:如果 id 是唯一的(因此属于 StandardPriceTable),则创建一个带有条件的 where 子句,它将当前对象返回到列表中。
但是,如果相同的 ID 属于许多 id_price_table ,则它应该验证哪个对象属于 CurrentUserPriceTable,只返回该对象,不包括具有相同 ID 的其他对象。
我知道我可以使用 foreach 语句来实现这一点,但这会导致我暂时要避免的数据库查询。
根据我告诉查询结果的条件将等于: IQueryable具有以下项:
vb.net - 在 VB.NET 中具有两个属性的 DistinctBy
查看Select distinct by two properties in a list可以使用具有两个属性的 DistinctBy 扩展方法。我试图将其转换为 vb.net,但我没有得到预期的结果
测试类:
测试方法:
在使用匿名类型的 vb.net 中这完全可能吗?做这样的事情:
正在工作,因此我猜我在这里缺少匿名类型中的相等性。
c# - MoreLinq 获取。它有什么作用?
我正在检查 Jon Skeet 的 MoreLinq,我对获取扩展源代码感到好奇
实现如下
据我了解,它接收 aIEnumerable<IDisposable>
并创建一个List<IDisposable>
.
我无法掌握这里可能出现的任何问题。
谁能向我解释一下,并可能提供一个这个扩展有用的例子?
c# - OrderBy 不工作
我正在尝试以下代码:
但没有按预期得到有序的结果。
如果我orderBy
在控制器中写为:
它做得很好。我不知道出了什么问题。
c# - 如何避免对包含在具有 internalsvisibleto 的两个项目中的 nuget 源代码包的模糊引用
假设您有两个项目:
- 主文件
- Main.Test.csproj
并且 Main 有一个属性
现在我们要引用一个 NuGet 包,该包将其内容作为源代码提供,例如两个项目中的 MoreLinq ( https://code.google.com/p/morelinq/ )。
问题是 Main.Test 项目现在有两个可见的源代码副本,因此编译器会发出不明确的引用错误。
有没有办法在不修改包放入每个项目的源代码的情况下避免这种情况?
PS 请不要使用诸如“不要使用 InternalsVisibleTo 因为...”之类的参数。我可以在其他地方阅读这些观点。
c# - morelinq 因多个属性而异
我一直在使用 morelinq 创建一个不同的对象列表。我的对象有大约 20 个属性,在最终列表中没有一个是唯一的。然而,两个属性一起使用可以揭示独特的对象:
父 ID | 孩子 ID
- 1 | 1
- 1 | 2
- 2 | 1
- 2 | 2
- 2 | 3
我看到了这个问题,并认为这是同样的问题,所以我下载了 morelinq 并尝试使用:
然而,这会导致任何一个属性上的不同列表,而不是两者(所以我只会看到每个父母一个孩子)
使用 morelinq 实现此目的的正确方法是什么?
c# - Morelinq 除了使用几个特定的元素
有2个xml文件
第一个 xml 文件包含:
和第二个 xml 文件:
我想要的是,ExceptBy()
在 Linq 中使用 morelinq features 或使用自定义类扩展 IEqualityComparer 上的 except() 功能以返回类似的内容(在第一个 xml 文件和第二个 xml 文件之间,即使第一个 xml 文件上的第三个标签价格有不同DistributorPriceFibrate
价值):
由于比较元素“价格”节点上的所有值,Except()
我只想比较特定的元素。<ProductId>
<EffectiveDate>
如果它们相同,则转到 empty tag <Prices/>
。如果这些元素的值不同,则从第一个 xml 文件中返回价格标签,该文件具有不同的值ProductID
和EffectiveDate
第二个 xml 文件。
我所做的我区分了第一个 xml 文件:
当使用 except 来比较 2 个文件时:
但它比较价格节点上的所有元素值。如何在特定元素中使用 exceptBy()?或自定义 IComparer 也许?
之前谢谢。
编辑
已经解决了。请参阅@dbc 的答案。