是否可以用一个Linq查询的多个键来填充一个HashTable?
我正在将SQL Server数据库中的数据抓住到我使用AseNumerable转换的数据表中,然后使用一系列LINQ语句分开.我的最终目标是采用这些LINQ查询,并为我产生刺激性.因此,代替匿名类型: var facebookPosts = from f in results.AsEnumerable() where f.GetInt("SocialMediaTypeID").Equals( (int) SocialMediaRecordType.FacebookPost) select new { Headline = f.GetString("Headline"), Parameters = new Parameters(f.GetString("Parameters")), SocialMediaUserID = f.GetLong("SocialMediaUser
16 2024-04-26
编程技术问答社区
在循环中比较两个哈希表的值
我有两个哈希表.我想根据密钥比较两个哈希表的值.我想在循环中进行此操作,如果发现匹配,则需要执行字符串构建操作.但是问题是我不知道将它们在循环中进行比较的任何机制.请引导我... 以下是我的哈希表 HashTable OldTable= new HashTable(); OldTable.Add("Date of Event", OCEFData.EventDate); OldTable.Add("Angina Status", OCEFData.AnginaStatusValue); OldTable.Add("Please indicate the body system involved (tick all that apply)",strBodySystem.ToString()); OldTable.Add("If Unstable Angina, define Bra
12 2024-04-25
编程技术问答社区
通过键获取哈希图obj并改变其公共属性
首先,我声明了一个标签及其价值.标签条目的关键是一个GUID,该值是具有几个字符串值的对象. Guid g = Guid.NewGuid(); Hashtable hash = new Hashtable(); InstallationFiles instFiles = new InstallationFiles(string1, string2, string3); hash.Add(g, instFiles); //...add many other values with different GUIDs... 我的目标是使用户有可能编辑字符串1,String2,String3.为了简短简短的故事,我处于需要编辑的条目的" Guid G"的位置: public void edit() { //here I retrieve the GUID g of the item which has to b
10 2024-04-25
编程技术问答社区
为什么HashTable Delete是O(1)?
我明白为什么添加添加的是o(1)(但是,如果我错了,请纠正我):添加的项目总是分配给备用阵列中的第一个可用位置. 我知道为什么查找为o(n)(同样,如果我错了,请纠正我):您需要浏览备用数组以查找所请求的值/键,并且此操作的运行时间将与集合的大小直接成正比. 但是,为什么为什么要删除 编辑 MSDN文章是指未找到要求删除的项目的情况.它提到这是O(1)操作. 解决方案 最坏的插入和删除情况应该是O(n),请参见 http:http:///en.wikipedia.org/wiki/hash_table . 插入时,我们必须检查值是否在表中,因此在最坏的情况下O(n). 只是想象所有哈希值相同的病理案例. 也许MSDN是指平均复杂性. 其他解决方案 o(1)是最好的情况,如果您适当大小,则可能是平均情况.最坏的情况删除了hashtable是o(n).
8 2024-04-24
编程技术问答社区
如何让一个方法接受两种类型的数据作为参数?
我有一种方法,接受一个标签(是的,我知道,它已经过时..)作为参数: public static LuaTable HashtableToLuatable(Hashtable t, int depth = 1) 这正常工作. 现在,我也想接受一个Arraylist作为第一个参数,因此您可以让't'具有标签和阵列列表的值.目前,我已经两次复制了该方法: public static LuaTable ArraylistToLuatable(ArrayList t, int depth = 1) 其余的完全相同. 我认为有一种合并的方法. 解决方案 两个类都实现了Icollection界面,因此,如果您的"常见代码"可以针对Icollection接口的定义,则可以将其用于参数类型. 其他解决方案 您已经显示了一个方法过载的示例,到目前为止,您在C#的框架内正在做的事情. 问题是,该方法对传递值必须做什么?必须有一些将它们视为"等效"的方法.
12 2024-04-23
编程技术问答社区
如何按字母顺序遍历Hashtable的键?
按字母顺序排列的遍历标签的钥匙的最简单方法是什么? 解决方案 这相当取决于键的类型.但是让我们假设它们是弦.您可以使用以下LINQ查询 Hashtable table = GetHashTable(); var keys = table.Keys.Cast().OrderBy(x => x); 对于更复杂的结构,LINQ查询仅略有不同.假设您有以下定义键 struct Name { public string First; public string Last; // Equality code omitted } LINQ代码将是以下 Hashtable table = GetHashtable(); var keys = table.Keys.Cast().OrderBy(x => x.First).ThenBy(x => x.Last); 其他解决方案 好吧,我发现这个片段最适合我的情况: Has
8 2024-04-23
编程技术问答社区
将哈希表中的所有键检索到字符串中
编码语言为C#3.0 什么是最佳方法将所有悬空键检索到由定界符分隔的字符串中的所有键盘", 是for循环还是foreach循环是唯一的选择? 更新:键已经是字符串 问候, naveenj 解决方案 您真的是指非生成Hashtable?您可以使用Linq,假设您可以使用: string keys = string.Join(",", table.Keys.Cast() .Select(x => x.ToString()) .ToArray()); 可能有更快的方法,但这就是我为了可读性而采取的方式.仅当您证明它是瓶颈时,仅微观才能. 其他解决方案 您也可以使用IDictionaryEnumerator: string text = ""; IDictionaryE
10 2024-04-23
编程技术问答社区
如何用c#字典中的浮点数作为键,并使用自定义比较器四舍五入到最接近的0.01?
我希望实现一个iequalityComparer类,该类存储并比较圆形为最接近0.01的浮点键.特别是,我想确保正确实现了GethashCode方法.我想使这效率尽可能高效.我可以将浮点数本身作为自己的哈希使用? 我可以乘以100,将int施放并使用int作为钥匙,但是我很好奇是否可以使用float键进行. 注意:我将词典包装在类中,以确保只添加或比较了舍入.01的值. 后续问题:如果我使用小数(保证始终舍入.01),我是否可以将默认比较用于词典中的十进制数字吗? 我的第一个想法是尝试此实现.有什么陷阱吗? class FloatEqualityComparer : IEqualityComparer { public bool Equals(float b1, float b2) { int i1 = (int)(b1 * 100); int i2 = (int)(b2 * 100);
6 2024-04-22
编程技术问答社区
c#中的 "婴儿"|"巨步 "算法。哈希表超出内存
我正在尝试使用哈希表来解决离散算法问题. 我正在使用小腿婴儿阶梯巨人步骤算法. 我的哈希表包含约11,000,000个键和值. 我不断出现记忆例外. 有没有什么办法解决这一问题?还是要使用的不同数据结构? 我正在使用.NET 4.0框架 使用Visual C#Express 2010 解决方案 我觉得这有些作弊,但是 wikipedia 解决方案 "该算法需要O(M)内存.可以通过在算法的第一步中选择较小的M来使用较少的内存.这样做会增加运行时间,然后是O(N/M).另外,人们可以将Pollard的Rho算法用于对数,该算法的运行时间与Baby-Step Giant-Step算法的运行时间大致相同,但只有很小的内存要求." > 其他解决方案 尝试针对64位平台.如今,32位可执行文件通常用尽虚拟内存空间.
12 2024-04-20
编程技术问答社区
从C#到PowerShell传递一个哈希表
我试图失败,以将Hashtable从C#传递到PowerShell作为脚本参数.当我在PowerShell中执行时,脚本和参数正常工作,因此我假设我的错误在C#侧. 在C#中,我只是像其他任何参数一样使用command.parameters.add().我传递给脚本的所有其他参数正在正确接收,但是hashtable为null. 从c#侧中,我尝试使用hashtable对象和字典对象,但似乎都没有起作用.在这两种情况下,我都已经确认该对象是实例化的,并且在传递到PowerShell之前具有值.我觉得有一个非常明显的解决方案盯着我的脸,但这只是没有点击. 解决方案 您只能将字符串作为命令行参数传递. 我不知道是否有限制,但是如果没有,您需要将凸面转换为字符串并在您的powershell脚本中解析. 其他解决方案 使用这个答案和 Command.Parameters.Add( string, object ) 方法过载,我能够将一个可在脚本的标签传递给脚本.这
12 2024-04-20
编程技术问答社区
不使用.NET串行器将哈希表转换为xml字符串并返回到哈希表
任何人都知道如何在不使用.NET基于.NET的XMLSerializer的情况下将hashtable转换为XML字符串,然后返回到标签.当代码在IE内部运行时,XMLSerializer提出了一些安全问题,并且浏览器的受保护模式已打开 - 因此,我基本上正在寻找一种简单的方法来将其转换为串起并返回标签. . 任何示例代码都将不胜感激. 谢谢 解决方案 您可以使用 datacontractserialtract/p> using System; using System.Collections; using System.IO; using System.Runtime.Serialization; using System.Text; using System.Xml; public class MyClass { public string Foo { get; set; } public string Bar { get; set; }
8 2024-04-20
编程技术问答社区
在.NET Hashtable(或其他结构)中获取最近/下一个匹配项
我在工作中有一个方案,其中我们具有类似于以下格式的几个不同的数据表: Table Name: HingeArms Hght Part #1 Part #2 33 S-HG-088-00 S-HG-089-00 41 S-HG-084-00 S-HG-085-00 49 S-HG-033-00 S-HG-036-00 57 S-HG-034-00 S-HG-037-00 第一列(可能还有更多)包含数字数据排序的上升,并表示一个范围,以确定要获取的数据的正确记录(例如高度 我需要查找并选择给定指定值最近的匹配.例如,给定高度= 34.25,我需要在上面的集合中获得第二个记录: 41 S-HG-084-00 S-HG-085-00 这些表目前存储在从CSV文件中加载的数据的vb.net hashtable"缓存"中,其中hashtable的键是表名称的复合件,而从表中的一个或多个列表示表示".键"
10 2024-04-20
编程技术问答社区
如何在C#中序列化Hashable?
我已经实现了会话状态模式SQLServer,并且在运行应用程序时,我将面临Hash表的XML序列化错误.我的班级看起来像: [Serializable] public class ProjectSetup{ private System.Collections.Hashtable _ConfigTable; //and other properties here public System.Collections.Hashtable ConfigTable { get { return _ConfigTable; } } } 现在,我想知道如何序列化仓鼠,或者如果还有其他选择,请告诉我. 和完全错误是:"不能序列化projectsetup.configtable type system.collections.hashtable,因为它实现了idictionary" 解决方案
10 2024-04-19
编程技术问答社区
带有可到期项目的哈希表
我想实现HashTable(或Mabybe A HashSet或Dictionary),该成员在一段时间后过期.例如: // Items expire automatically after 10 seconds (Expiration period = 10 sec) bool result = false; // Starting from second 0 result = MyHashSet.Add("Bob"); // second 0 => true result = MyHashSet.Add("Alice"); // second 5 => true result = MyHashSet.Add("Bob"); // second 8 => false (item already exist) result = MyHashSet.Add("Bob"); // second 12 => true (Bob has expired) 如何以最低成本的线
8 2024-04-19
编程技术问答社区
单个键有多个值的Hashtable
我想将多个值存储在一个键中,例如: HashTable obj = new HashTable(); obj.Add("1", "test"); obj.Add("1", "Test1"); 现在这引发了错误. 解决方案 您可以将test,test1,test2,...放在表中,然后将此表放入标签上,作为键的值,这对所有人都将相同. 例如,尝试这样的事情: List list = new List(); list.Add("test"); list.Add("test1"); ,然后: HashTable obj = new HashTable(); obj.Add("1", list); 其他解决方案 您不能在字典/hashtable中使用相同的键. 我认为您想使用每个键的列表,例如(vb.net): Dim dic As New Dictionary(Of String, List(Of Strin
10 2024-04-18
编程技术问答社区
如何用C#中的foreach枚举
我正在尝试枚举Hashtable,该>被定义为: private Hashtable keyPairs = new Hashtable(); foreach (SectionPair s in keyPairs) { if (s.Section == incomingSectionNameVariable) { bExists = true; break; } } // more stuff here 但是我从Visual Studio 2013中遇到了一个错误,"无知的Castexception是没有帮助的".尽管如此,我有兴趣知道为什么要遇到此错误. 解决方案 您可以在foreach(DictionaryEntry s in keyPairs) { //Is Section the Key? if(s.Key == incomingSectionNameVariable) { bExists = true;
6 2024-04-18
编程技术问答社区
最好使用HashTable或switch案例
我不确定哪一个更好.我需要解析输入字符串的每个字符,并为角色替换字符串.对于某些对象,允许所有字母数字字符,因此使用开关/情况会导致大量代码并降低可读性和可维护性,但我可以使用静态方法.使用标签也需要大量代码 使用静态方法: private static string EncodeChar(char c) { var symbols = string.Empty; switch (c) { case '0': symbols = "Test"; break; case '1': symbols = "Hello"; break; [...] } symbols; } 使用Ha
10 2024-04-17
编程技术问答社区
检查键/值对是否存在于hashtable集合中
我有仓促 Hashtable hash = new Hashtable(); hash.Add("a", "1"); hash.Add("b","2"); hash.Add("c","3"); hash.Add("c","4" 现在,我需要检查键=" c",value =" 3"组合已经在伸出台上退出. hash.ContainsKey值函数cheks天气密钥是否存在,ContainsValue功能检查天气值是否存在.但是如果我尝试 if( hash.Contains("c") && hash.ContainsValue("3")) { // some code heree } 比" C,3"和" C,4"组合都将返回. 我需要检查键/价值对组合,该如何检查? 解决方案 if(hash.ContainsKey("c") && hash["c"] == "3") { } 其他解决方案 您可以检查键是否存在,然后检查相应键的值. if(
12 2024-04-16
编程技术问答社区
Hashtable/Dictionary的碰撞
仅使用标准英语字母并强调,可以在最大值的情况下使用多少个字符,而不会引起潜在的碰撞/词典. 这样的字符串喜欢: blur Blur b Blur_The_Shades_Slightly_With_A_Tint_Of_Blue ... 解决方案 无法保证您不会在单个字母之间发生碰撞. you 可能不会,但是未指定string.GetHashCode中使用的算法,并且可能会更改. (特别是它在.NET 1.1和.NET 2.0之间发生了变化,这燃烧了假设它不会改变的人.) 请注意,哈希代码碰撞不会停止设计良好的Hashtables工作 - 您仍然应该能够取出正确的值,如果它们有相等,它可能只需要使用平等检查多个键相同的哈希代码. 任何依赖哈希代码唯一的字典都是缺少有关哈希代码的重要信息::)(除非它在非常的特定条件下运行,而它绝对知道他们'll是独一无二的,即使用其他解决方案 给定一个 否.唯一的哈希代码AVILABLE = 2 ^ 32 = 4
6 2024-04-16
编程技术问答社区
Hashtable/Dictionary的碰撞
仅使用标准英语字母并强调,可以在最大值的情况下使用多少个字符,而不会引起潜在的碰撞/词典. 这样的字符串喜欢: blur Blur b Blur_The_Shades_Slightly_With_A_Tint_Of_Blue ... 解决方案 无法保证您不会在单个字母之间发生碰撞. you 可能不会,但是未指定string.GetHashCode中使用的算法,并且可能会更改. (特别是它在.NET 1.1和.NET 2.0之间发生了变化,这燃烧了假设它不会改变的人.) 请注意,哈希代码碰撞不会停止设计良好的Hashtables工作 - 您仍然应该能够取出正确的值,如果它们有相等,它可能只需要使用平等检查多个键相同的哈希代码. 任何依赖哈希代码唯一的字典都是缺少有关哈希代码的重要信息::)(除非它在非常的特定条件下运行,而它绝对知道他们'll是独一无二的,即使用其他解决方案 给定一个 否.唯一的哈希代码AVILABLE = 2 ^ 32 = 4
12 2024-04-16
编程技术问答社区