问题标签 [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.
c# - 如何在扩展方法中使用“继续”和“中断”?
我定义了以下扩展方法:
然后我可以将其用作:
我希望能够利用continue
并break
在我的扩展方法内部,这样我就可以做到:
这些关键字只能在for
、或循环foreach
中使用吗?while
do-while
c# - Linq 基于两列不同
我有一个要求,我需要在 2 列中获取具有相同组合的唯一记录。我的数据就像 CA(A 列)和 CB(B 列)一样,有一些数据
CA
CB
1
2
1
2
3
4
5
6
2
1
1
6
1
6
5
1
比方说,我需要1
从两个应该是唯一的列中获取具有值的记录。
所以,我的最终结果应该是:
1
2
1
6
5
1
在这里我不应该得到记录2
,1
因为该组合已经存在于第一条记录中1
。2
这是我尝试过的查询:
我使用moreLinq
了扩展名DistinctBy
,因为我需要整个记录。(抱歉格式和英文不好!!!)
在这里,我的实际需求是获取用户最近的聊天记录
c# - Select Distinct Count 真的很慢
我有一个大约 7000 个对象的循环,在循环中我需要获取结构列表的不同计数。目前我正在使用 -
获取不同计数时,这非常慢。有人知道这样做的更有效方法吗?我曾尝试使用 MoreLinq,它有一个用于 Linq 的 DisctintBy 方法,但它并不高效,因为我已经计时了。我玩过 PLinq,但我有点不确定在哪里并行化这个查询。
因此,循环的每次迭代都在 -
经过的
时间:00:00:37.1142047 开始
经过的
时间:00:00:37.8310148 结束
= 0.7168101 秒 * 7000 = 5017.6707(83.627845 分钟)
它的 Distinct() Count() 行处理时间最长(大约 0.5 秒)。变量差异有几十万个 OrderLineStruct,因此对此进行任何 linq 查询都很慢。
更新
我对循环进行了一些修改,现在它运行了大约 10 分钟而不是超过 1 小时
在 except 上有一个 .ToList() 似乎有所作为,现在我在每次迭代后删除已经处理的订单,这提高了每次迭代的性能。
c# - List 列表中的 LINQ 开始和停止段元素
给定一个类的对象列表 ( List<Type1>
)
我想获得连音组(可变大小)中的起始值和停止值以添加到第二类(List<Type2>.Add()
)的列表中
元素的顺序很重要。MoreLinq 作为一个选项,但不确定我需要执行的操作类型来获取这些值。它可能是分区或某种 GroupBy,但这似乎不起作用。
我最终需要的最终结果将是
c# - DistinctBy 但忽略 null/empty
我有一个电影列表,我需要将它们与另一个列表合并并复制。
我正在使用 Jon SkeetDistinctBy(m => m.SomeUniqueMovieProperty)
来实现这一点,它工作正常。除了,我们很快发现会有 10-20% 的电影(在任一列表中)没有填写此属性,导致DistinctBy
将它们折叠成 1 个幸运电影。
这是一个问题,我们希望保留所有没有此属性值的电影。最初我想从每个集合中提取这些电影,复制,然后再次合并它们,是否有更短的解决方案来解决这个问题?
c# - 如何从列表中删除重复值但希望包含该列表中的所有空字符串
我有一个对象列表,我想删除其中的重复项但不想删除空白对象。我正在使用 DistinctBy lambda 表达式。但它也会删除重复项。任何人都可以帮助我提供通过空白的条件并仅检查在对象中具有适当值的对象吗?
c# - Return 0 if no duplicates found from DistinctBy
I thought this would have been simple, but unfortunately I cannot find an answer to what I'm looking for. What I'd like to achieve, is return a list of distinctive results if they're duplicated, otherwise return 0 instead of singular items. The code I have so far is, where the first distinct by should return all distinct rows, and then the second one filter them further down:
The problem with this is, when I have just 1 item in the list which has no duplicates - this code still returns 1, when I want it to return 0.
Happy day scenario, when its all working as I want, given the following:
Result is correct as expected:
Problem scenario, given the following:
Result is incorrect:
Expected Result: nothing
Please help.
c# - 为什么 i.Parent.ReplaceWith(i) 不抛出异常?
在这些语句中(使用 运行MoreLinq
):
我看到它i.Parent.ReplaceWith(i)
不会引发异常,但这会引发空引用异常(使用ForEach
from MoreLinq
):
我知道 LINQToList()
正在制作列表的副本,但副本不会也抛出异常吗?此外,这里是否发生了某种孤立引用的内存泄漏?
c# - Count() 值中的 IEnumerable 批处理差异
我正在尝试批量处理IEnumerable<T>
相等的子集并遇到以下解决方案:
MoreLinq Nuget 库 Batch,这里详细介绍了它的实现:
MoreLinq - Batch,在下面粘贴源代码:
/li>以下链接提供了另一个最佳解决方案(内存效率更高):
IEnumerable Batching,在下面粘贴源代码:
/li>
这两种解决方案都提供了最终结果IEnumerable<IEnumerable<T>>
。
我在以下代码中发现了差异:
var result = Fetch IEnumerable<IEnumerable<T>>
从上面建议的任何一种方法
result.Count()
, 导致不同的结果,它对 MoreLinq Batch 是正确的,但对另一个不正确,即使结果是正确的并且两者都相同
考虑以下示例:
即使提供的批处理结果是正确的,当我们这样做时ToList()
,由于我们仍在处理第二种方法中的内存流并且没有分配内存,但仍然不正确的结果不应出现错误,任何意见/建议