如何将对象数组拆分为多个给定大小的子数组

Mr *_*ubs 1 linq vb.net

我想将一个对象数组拆分为多个包含不超过 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)

但这并没有给出相同的结果,尽管看起来应该如此。

显然这只是一个例子,我真的希望它能够处理一系列海关对象。(加分点:为什么这两个例子不等价?)。

Tim*_*ter 5

在 C# 中,整数除法意味着小数位被截断,结果也是一个int. 这就是为什么它在 C# 中工作,而不是在 VB.NET 中工作,VB.NET 保留小数位,因为它将其转换为Double.

如果您想在 VB.NET 中实现相同的行为,则需要\使用/.

请参阅:\ 运算符 (Visual Basic)

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)