首页 / C# / C#-Linq然后无限期运行
C#-Linq然后无限期运行
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C#-Linq然后无限期运行,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1419字,纯文字阅读大概需要3分钟。
内容图文
![C#-Linq然后无限期运行](/upload/InfoBanner/zyjiaocheng/660/27268df63a2646fc8cc9bb95e17f1748.jpg)
我有一个函数,它的作用仅仅是以一种易于理解的方式打印出频繁出现的项目集的字典.目标是首先按字典键的大小排序,然后按数字列表的字典顺序排序.该问题出现在ThenBy语句中,因为注释掉的“ hello”将无限期打印.如果我将ThenBy更改为不使用比较器,而仅使用另一个int或字符串值,则它可以正常工作,因此我显然做错了什么.
public static void printItemSets(Dictionary<List<int>, int> freqItemSet)
{
List<KeyValuePair<List<int>, int>> printList = freqItemSet.ToList();
printList = printList.OrderBy(x => x.Key.Count)
.ThenBy(x => x.Key, new ListComparer())
.ToList();
}
ListComparer的代码如下:
public class ListComparer: IEqualityComparer<List<int>>, IComparer<List<int>>
{
public int Compare(List<int> a, List<int> b)
{
int larger = a.Count > b.Count ? 1: -1;
for (int i = 0; i < a.Count && i < b.Count; i++)
{
if (a[i] < b[i])
{
return -1;
}
else if (a[i] > b[i])
{
return 1;
}
else { }
}
return larger;
}
}
非常简单的测试用例:
int[] a = {1, 3, 5};
int[] b = { 2, 3, 5 };
int[] c = { 1, 2, 3, 5 };
int[] d = { 2, 5 };
int[] e = { 1, 3, 4 };
List<int> aL = a.ToList<int>();
List<int> bL = b.ToList<int>();
List<int> cL = c.ToList<int>();
List<int> dL = d.ToList<int>();
List<int> eL = e.ToList<int>();
Dictionary<List<int>, int> test = new Dictionary<List<int>, int>(new ListComparer());
test.Add(aL, 1);
test.Add(bL, 1);
test.Add(cL, 1);
test.Add(dL, 1);
test.Add(eL, 1);
解决方法:
问题是ListComparer不检查数组是否相同. x和y两次传递相同的数组.检查x和y是否相等将解决您的问题.
内容总结
以上是互联网集市为您收集整理的C#-Linq然后无限期运行全部内容,希望文章能够帮你解决C#-Linq然后无限期运行所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。