Tag: sortedlist

.NET / C# – 将列表转换为SortedList

将List转换为SortedList的最佳方法是什么? 没有骑自行车的任何好方法吗? 用OrderBy()做任何聪明的方法吗? WRAP UP请阅读所有答案和评论。

从列表/ SortedLists C#创建CSV字符串的有效方法?

我有一个实现异步SOAP的应用程序。 每50-100ms我将收到转换为SortedList对象的数据。 我还有一个预定义的IList ,其中包含SortedList中的所有可能的键。 我需要遍历IList并检查SortedList包含该密钥。 如果是,我将该值写入csv字符串; 如果没有,我写0.0到csv字符串。 注意: IList有400个密钥。 SortedList通常远小于400,最多约100。 string MyText = timestamp.ToString(“HH:mm:ss”); for (int i = 0; i < AllKeys.Count; i++) { double info; if (MySortedList.TryGetValue(AllKeys[i], out info)) { MyText += "," + info; } else { MyText += ",0.0"; } } MyText += "\n"; File.AppendAllText(filePath, MyText); 我目前正在使用上面的代码创建csv字符串,然后将其写入我的文件。 但是,我发现此代码滞后于我的应用程序。 我需要帮助提高效率,以便存储传入数据的时间少于50毫秒。 一些额外的东西: 我不必写入csv文件,我只需要快速存储数据。 (我可以稍后从序列化文件转换为我的csv文件) […]

C#按值对象排序列表

我正在尝试在C#中创建对象的“有序”缓存,其中的顺序取决于访问的次数。 我已经研究过Dictionary,SortedList和SortedDictionary,它们非常接近,但并不完全符合我的要求。 我想要一个包含所有以前缓存的项目的列表,这些项目可以使用getHits()方法来确定缓存项目的顺序。 然后,我可以按名称访问该缓存,并增加项目的查看次数。 简化示例(在Pseudo C#中 ): class Result { public int Hits = 0; public string Name = “”; public void IncreaseHits() { this.hits++; } public Result(String name) { this.name = name; } } class Program { public MagicSortableType MyCache; //what structure to use? public main() { MyCache.Add(new Result(“My result 1”)); MyCache.Add(new Result(“My result […]

c#SortedList .ContainsKey表示成功添加的键返回false

检查下面的更新3我发现我遇到的问题与.Net 4.0,4.0客户端和4.5的c#字符串比较器的已知严重问题有关,这将导致字符串列表的排序顺序不一致(导致输出依赖在输入的顺序和使用的排序算法)。 该问题于2012年12月向Microsoft报告,并以“不会修复”结束。 可以使用一种解决方法,但速度慢得多,对于大型集合来说几乎不实用。 在实现不可变的PatriciaTrie时,我想将其性能与System.Collections.Generic.SortedList进行比较。 我使用以下文件https://github.com/rkapsi/patricia-trie/blob/master/src/test/resources/org/ardverk/collection/hamlet.txt来创建用于测试的输入词表。 在c#SortedList中插入每个单词时,使用Comparer.Default或StringComparer.InvariantCulture作为键比较器,无法使用常规搜索方法检索成功插入的多个条目(例如ContainsKey返回false )但是通过迭代列表观察到密钥存在于列表中。 更奇怪的是,比较器在将从排序列表中检索到的密钥与使用ContainsKey无法找到的搜索关键字进行比较时返回值“0”。 下面的完整示例演示了我的系统上的这个问题。 using System; using System.IO; using System.Linq; using System.Collections.Generic; class Program { static void Main(string[] args) { // the problem is possibly related to comparison. var fail = true; var comparer = fail ? StringComparer.InvariantCulture : StringComparer.Ordinal; // read hamlet (contains duplicate words) var words = […]

c#如何按值列对排序列表进行排序

我有一个通用的排序列表“结果”与key = some filename和value = boolean。 我想按布尔条目或值列对列表进行排序。 有谁知道我怎么做到这一点? 谢谢!

C#中是否存在非唯一键排序列表generics集合?

我对System.Collections.Generic.SortedList感到有些惊讶 它需要我使用而不是 (比较器) 它只允许按值输入 这些在我想要使用它的方式上显得古怪(尽管我确信它们适合其他情况)。 还有另一个没有这两个特征的集合吗?