我想将一个对象数组拆分为多个包含不超过 10 个元素的数组。
花了很长时间查看示例,我能找到的最接近的是 C# 中的示例:
Enumerable.Range(0, 100).Select((Value, Index) => new {Value, Index})
.GroupBy(p => p.Index/10)
.Select(g => g.Select(p => p.Value).ToList())
Run Code Online (Sandbox Code Playgroud)
它在 LinqPad 中运行并工作,所以我尝试将其转换为 VB.Net:
Enumerable.Range(0, 100).Select(Function(Value, Index) New With {Value, Index}) _
.GroupBy(Function(x) x.Index / 10) _
.Select(Function(g) g.Select(Function(p) p.Value).ToList())
Run Code Online (Sandbox Code Playgroud)
但这并没有给出相同的结果,尽管看起来应该如此。
显然这只是一个例子,我真的希望它能够处理一系列海关对象。(加分点:为什么这两个例子不等价?)。
在 C# 中,整数除法意味着小数位被截断,结果也是一个int. 这就是为什么它在 C# 中工作,而不是在 VB.NET 中工作,VB.NET 保留小数位,因为它将其转换为Double.
如果您想在 VB.NET 中实现相同的行为,则需要\使用/.
Enumerable.Range(0, 100).Select(Function(Value, Index) New With {Value, Index}) _
.GroupBy(Function(x) x.Index \ 10) _
.Select(Function(g) g.Select(Function(p) p.Value).ToList())
Run Code Online (Sandbox Code Playgroud)