c# 字典的查找及其排序问题

feng_3630 2014-03-15 09:36:23
Dictionary<PointF, List<float>> pointDatas
我想根据这里的PointF 中的X、Y 分别除以 a,b 两个数找到 商相同的数据 再按他们的余数 来排序,请问这个怎么操作?
...全文
745 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
feng_3630 2014-03-15
  • 打赏
  • 举报
回复
引用 4 楼 u011130289 的回复:
[quote=引用 2 楼 feng_3630 的回复:] [quote=引用 1 楼 Return_false 的回复:]
Dictionary<Point, List<float>> pointDatas = new Dictionary<Point, List<float>>()
            {
                {new Point(10,20),new List<float>(){1.2f,1.3f}},
                {new Point(40,60),new List<float>(){1.2f,1.3f}},
                {new Point(15,20),new List<float>(){1.2f,1.3f}},
                {new Point(20,30),new List<float>(){1.2f,1.3f}}
            };
            //假设a,b
            int a = 2, b = 3;
            var result = pointDatas.Where(x=>x.Key.X/a==x.Key.Y/b).OrderBy(x=>x.Key.X%x.Key.Y);//余数升序排列
            //var result = pointDatas.Where(x => x.Key.X / a == x.Key.Y / b).OrderByDescending(x => x.Key.X % x.Key.Y);//余数降序排列
            /*
             * +		[0]	{[{X=20,Y=30}, System.Collections.Generic.List`1[System.Single]]}	System.Collections.Generic.KeyValuePair<System.Drawing.Point,System.Collections.Generic.List<float>>
+		[1]	{[{X=40,Y=60}, System.Collections.Generic.List`1[System.Single]]}	System.Collections.Generic.KeyValuePair<System.Drawing.Point,System.Collections.Generic.List<float>>

             */
x=>x.Key.X/a==x.Key.Y/b 这里为什么是两个== 我的意思是要找到 X 和 Y 分别除以a,b 后 商分别相同的数据 并不是同一个PointF 中商相同 [/quote] 就一个==,还有一个是lambda语法而已[/quote]请问根据我的要求怎么修改呢?
Regan-lin 2014-03-15
  • 打赏
  • 举报
回复
引用 2 楼 feng_3630 的回复:
[quote=引用 1 楼 Return_false 的回复:]
Dictionary<Point, List<float>> pointDatas = new Dictionary<Point, List<float>>()
            {
                {new Point(10,20),new List<float>(){1.2f,1.3f}},
                {new Point(40,60),new List<float>(){1.2f,1.3f}},
                {new Point(15,20),new List<float>(){1.2f,1.3f}},
                {new Point(20,30),new List<float>(){1.2f,1.3f}}
            };
            //假设a,b
            int a = 2, b = 3;
            var result = pointDatas.Where(x=>x.Key.X/a==x.Key.Y/b).OrderBy(x=>x.Key.X%x.Key.Y);//余数升序排列
            //var result = pointDatas.Where(x => x.Key.X / a == x.Key.Y / b).OrderByDescending(x => x.Key.X % x.Key.Y);//余数降序排列
            /*
             * +		[0]	{[{X=20,Y=30}, System.Collections.Generic.List`1[System.Single]]}	System.Collections.Generic.KeyValuePair<System.Drawing.Point,System.Collections.Generic.List<float>>
+		[1]	{[{X=40,Y=60}, System.Collections.Generic.List`1[System.Single]]}	System.Collections.Generic.KeyValuePair<System.Drawing.Point,System.Collections.Generic.List<float>>

             */
x=>x.Key.X/a==x.Key.Y/b 这里为什么是两个== 我的意思是要找到 X 和 Y 分别除以a,b 后 商分别相同的数据 并不是同一个PointF 中商相同 [/quote] 就一个==,还有一个是lambda语法而已
feng_3630 2014-03-15
  • 打赏
  • 举报
回复
引用 1 楼 Return_false 的回复:
Dictionary<Point, List<float>> pointDatas = new Dictionary<Point, List<float>>()
            {
                {new Point(10,20),new List<float>(){1.2f,1.3f}},
                {new Point(40,60),new List<float>(){1.2f,1.3f}},
                {new Point(15,20),new List<float>(){1.2f,1.3f}},
                {new Point(20,30),new List<float>(){1.2f,1.3f}}
            };
            //假设a,b
            int a = 2, b = 3;
            var result = pointDatas.Where(x=>x.Key.X/a==x.Key.Y/b).OrderBy(x=>x.Key.X%x.Key.Y);//余数升序排列
            //var result = pointDatas.Where(x => x.Key.X / a == x.Key.Y / b).OrderByDescending(x => x.Key.X % x.Key.Y);//余数降序排列
            /*
             * +		[0]	{[{X=20,Y=30}, System.Collections.Generic.List`1[System.Single]]}	System.Collections.Generic.KeyValuePair<System.Drawing.Point,System.Collections.Generic.List<float>>
+		[1]	{[{X=40,Y=60}, System.Collections.Generic.List`1[System.Single]]}	System.Collections.Generic.KeyValuePair<System.Drawing.Point,System.Collections.Generic.List<float>>

             */
x=>x.Key.X/a==x.Key.Y/b 这里为什么是两个== 我的意思是要找到 X 和 Y 分别除以a,b 后 商分别相同的数据 并不是同一个PointF 中商相同
  • 打赏
  • 举报
回复
Dictionary<Point, List<float>> pointDatas = new Dictionary<Point, List<float>>()
            {
                {new Point(10,20),new List<float>(){1.2f,1.3f}},
                {new Point(40,60),new List<float>(){1.2f,1.3f}},
                {new Point(15,20),new List<float>(){1.2f,1.3f}},
                {new Point(20,30),new List<float>(){1.2f,1.3f}}
            };
            //假设a,b
            int a = 2, b = 3;
            var result = pointDatas.Where(x=>x.Key.X/a==x.Key.Y/b).OrderBy(x=>x.Key.X%x.Key.Y);//余数升序排列
            //var result = pointDatas.Where(x => x.Key.X / a == x.Key.Y / b).OrderByDescending(x => x.Key.X % x.Key.Y);//余数降序排列
            /*
             * +		[0]	{[{X=20,Y=30}, System.Collections.Generic.List`1[System.Single]]}	System.Collections.Generic.KeyValuePair<System.Drawing.Point,System.Collections.Generic.List<float>>
+		[1]	{[{X=40,Y=60}, System.Collections.Generic.List`1[System.Single]]}	System.Collections.Generic.KeyValuePair<System.Drawing.Point,System.Collections.Generic.List<float>>

             */
C#5.0本质论第四版,高清扫描的,对C#5.0技术讲的比较详细,第1章 C#概述 1 1.1 Hello,World 1 1.2 C#语法基础 3 1.2.1 C#关键字 3 1.2.2 标识符 4 1.2.3 类型定义 5 1.2.4 Main 6 1.2.5 语句和语句分隔符 7 1.2.6 空白 8 1.2.7 使用变量 8 1.2.8 数据类型 9 1.2.9 变量的声明 9 1.2.10 变量的赋值 10 1.2.11 变量的使用 11 1.3 控制台输入和输出 11 1.3.1 从控制台获取输入 11 1.3.2 将输出写入控制台 12 1.3.3 注释 14 1.3.4 托管执行和公共语言基础结构 16 1.3.5 C#和.NET版本 17 1.3.6 CIL和ILDASM 18 1.4 小结 20 第2章 数据类型 21 2.1 基本数值类型 21 2.1.1 整数类型 22 2.1.2 浮点类型 23 2.1.3 decimal类型 23 2.1.4 字面值 24 2.2 更多基本类型 27 2.2.1 布尔类型 27 2.2.2 字符类型 27 2.2.3 字符串 29 2.3 null和void 34 2.3.1 null 34 2.3.2 void 35 2.4 类型的分类 37 2.4.1 值类型 37 2.4.2 引用类型 37 2.5 可空修饰符 38 2.6 数据类型之间的转换 39 2.6.1 显式转型 39 2.6.2 隐式转型 41 2.6.3 不使用转型操作符的类型转换 42 2.7 数组 43 2.7.1 数组的声明 44 2.7.2 数组的实例化和赋值 45 2.7.3 数组的使用 48 2.7.4 字符串作为数组使用 52 2.7.5 常见数组错误 53 2.8 小结 55 第3章 操作符和控制流 57 3.1 操作符 57 3.1.1 一元操作符正和负 58 3.1.2 二元算术操作符 58 3.1.3 复合赋值操作符 64 3.1.4 递增和递减操作符 65 3.1.5 常量表达式和常量符号 68 3.2 控制流程概述 69 3.2.1 if语句 70 3.2.2 嵌套if 71 3.3 代码块 73 3.4 代码块、作用域和声明空间 74 3.5 布尔表达式 76 3.5.1 关系操作符和相等性操作符 77 3.5.2 逻辑布尔操作符 77 3.5.3 逻辑求反操作符 78 3.5.4 条件操作符 79 3.5.5 空接合操作符 80 3.6 按位操作符 80 3.6.1 移位操作符 81 3.6.2 按位操作符 82 3.6.3 按位赋值操作符 83 3.6.4 按位取反操作符 84 3.7 控制流语句(续) 84 3.7.1 while和do while循环 84 3.7.2 for循环 86 3.7.3 foreach循环 88 3.7.4 switch语句 90 3.8 跳转语句 92 3.8.1 break语句 92 3.8.2 continue语句 94 3.8.3 goto语句 95 3.9 C#预处理指令 97 3.9.1 排除和包含代码 98 3.9.2 定义预处理符号 98 3.9.3 生成错误和警告 99 3.9.4 关闭警告消息 99 3.9.5 nowarn:选项 99 3.9.6 指定行号 100 3.9.7 可视编辑器提示 100 3.10 小结 101 第4章 方法和参数 103 4.1 方法的调用 104 4.1.1 命名空间 105 4.1.2 类型名称 106 4.1.3 作用域 107 4.1.4 方法名称 107 4.1.5 形参和实参 107 4.1.6 方法返回值 107 4.1.7 语句与方法调用的比较 108 4.2 方法的声明 108 4.2.1 形式参数声明 109 4.2.2 方法返回类型声明 110 4.3 using指令 111 4.4 Main()的返回值和参数 114 4.5 方法的参数 116 4.5.1 值参数 116 4.5.2 引用参数(ref) 117 4.5.3 输出参数(out) 118 4.5.4 参数数组 120 4.6 递归 122 4.7 方法重载 124 4.8 可选参数 126 4.9 用异常实现基本错误处理 129 4.9.1 捕捉错误 130 4.9.2 使用throw语句报告错误 136 4.10 小结 138 第5章 类 139 5.1 类的定义和实例化 141 5.2 实例字段 144 5.2.1 实例字段的声明 144 5.2.2 实例字段的访问 144 5.3 实例方法 145 5.4 使用this关键字 146 5.5 访问修饰符 151 5.6 属性 153
第1章向读者介绍数据结构作为数据集合的概念。介绍线性和非线性集合的概念。示范说明了Collection类。本章还介绍泛型编程的概念。泛型编程允许程序员编写一个类或一种方法,并且把它用于众多数据类型。泛型编程是C#语言一种重要的新特性(在C#2.0以及更高版本中可用)。这种特性是如此重要以至于在System.Collections.Generic命名空间中存在一个专门的泛型数据结构库。当数据结构具有在此库中能找到的泛型实现时,就会讨论它的用途。本章结尾处介绍了衡量书中讨论的数据结构与算法性能的方法。 第2章提供了数组构造方法的回顾,并连同示例说明了Array类的特征。Array类把许多与数组相关的函数(UBound函数、LBound函数等等)封装到单独一个包中。ArrayLists是数组的一种特殊类型,它支持动态地调整容量。 第3章是对基础排序算法的介绍,例如冒泡排序和插入排序。而第4章则研究了用于内存查找的最基本算法,顺序查找和二叉查找。 第5章探讨了两种经典的数据结构:堆栈和队列。本章节强调的重点是这些数据结构在解决日常数据处理问题中的实际应用。第6章讲述了BitArray类。这种类可以用于有效地表示大量整数值,比如测试成绩。 数据结构的书中通常不包含字符串,但是第7章介绍了字符串、String类和StringBuilder类。这是因为在C#语言中许多的数据处理是在字符串上执行的,读者应该接触基于这两种类的特殊方法。第8章分析了用于文本处理和模式匹配的正则表达式的使用。与较传统的字符串函数和方法相比,正则表达式常常会提供更强大更有效的处理。 第9章向读者介绍作为数据结构的字典的使用。字典和基于字典的不同数据结构把数据作为键/值对来存储。本章向读者说明了如何创建基于DictionaryBase类的他或她自己的类。DictionaryBase类是一个抽象类。第10章包括散列表和HashTable类。HashTable类是字典的一种特殊类型,它用散列算法对内部数据进行存储。 链表作为另外一种经典的数据结构是在第11章介绍。链表在C#语言中不像在C++这样基于指针的语言中那样重要,但是它始终在C#编程中发挥作用。第12章为读者介绍另一种经典数据结构——二叉树。二叉查找树作为二叉树的特殊类型将是本章的主要内容。其他二叉树类型在第15章进行介绍。 第13章向读者说明在集合中存储数据的方法。这种方法在数据结构只存储唯一数据值的情况下是很实用的。第14章涵盖了高级排序算法,包括流行且高效的快速排序算法。此算法是大多数在.NET框架库中实现的排序程序的基础。第15章会看到三种数据结构。在无法使用二叉查找树的时候,这三种数据结构证明对查找是很有用的。他们是:AVL树、红黑树和跳跃表。 第16章讨论了图以及图的算法。图在表示许多不同的数据类型时非常有用,特别是网络的情况。最后,第17章向读者介绍真正的算法设计技巧是什么:动态算法和贪心算法。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧