Linq 查询结果 可能遵循 2 º,2¹,2 ²,......增长计算

复制代码
        static void Main(string[] args)
        {
            int[] array = new int[] { 102, 12, 23, 412, 22, 14, 45, 65, 33 };

            var obj = from item in array
                      orderby item ascending
                      group item by item / 100;
            
  
            foreach (var item in obj)
            {
                Console.WriteLine(item.ToString());
            }


            return;
        }  
复制代码

无聊随便写Linq玩,突然发现这个问题,请看上面这段代码,理想状态下,obj结果应该是:

{0:[12,14,22,23,33,45,65]        

1:[102]

4:[412]}

实际结果(请用监视查看,最后多出的0打印不出来的):

{0:[12,14,22,23,33,45,65,0]                 //看好 8位 = 23 ,不足补0

1:[102]         //20

4:[412]}        //20

也就是说0分组最后多个0,但是这个0不在原数组array中定义,它是怎么出现的?

 

后来修改数组int[] array = new int[] { 102, 12, 23, 412, 22,111,156, 14, 45, 65, 33,88 };

复制代码
        public static void Main(string[] args)
        {
            int[] array = new int[] { 102, 12, 23, 412, 22,111,156, 14, 45, 65, 33,88 };

            var obj = from item in array
                      orderby item ascending
                      group item by item / 100;
            
            foreach (var item in obj)
            {
                foreach (var t in item)
                {
                    Console.Write(t + "\t");
                }
                Console.WriteLine();
            }
            
            return;
        }    
复制代码

 

这次测试结果是(请用监视查看,1分组末尾多个0打印不出来的):

{0:[12,14,22,23,33,45,65,88]         // 8位 = 23 

1:[102,111,156,0]    // 4位 = 22,不足补0

4:[412]}        //20

 

于是,猜测 Linq 查询结果 可能遵循 2 º,2¹,2 ²,......增长计算

posted @   牧师/preacher  阅读(421)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示