草庐IT

IEnumerables

全部标签

c# - 我可以使用 Linq 从 IEnumerables 构建元组吗?

我有两个IEnumerables,我想构建一个IEnumerable的Tuple从。Item1的Tuple应该是项目的索引,Item2第一个集合中第index个位置的值,以及Item3第二个集合中第index个位置的值。这在Linq中可以轻松完成吗?例如varfirst=newList(){10.0,20.0,30.0};varsecond=newList(){1.0,2.0,3.0};varresult=TupleBuild(first,second);//result={(0,10.0,1.0),(1,20.0,2.0),(2,30.0,3.0)}哪里:IEnumerable>Tu

c# - 在 null IEnumerables 上为 Count() 返回零

我已经厌倦了使用这样的代码:varcount=0;if(myEnumerable!=null){count=myEnumerable.Count();}这有点迂腐:varcount=(myEnumerable??newstring[0]).Count();有没有更简洁的方法来做到这一点?我曾经在IEnumerable上有一个(名字不好的)PhantomCount扩展方法,它使用了我的第一个代码示例,但它有一些味道(除了名字之外)。 最佳答案 问题实际上出在创建这些可枚举对象的任何方面。除非你有充分的理由,否则任何生成可迭代集合的东西

c# - 在 C# 中链接 IEnumerables?

有没有一种简单的内置方法来获取IEnumerable的有序列表并返回单个IEnumerable,它按顺序产生第一个中的所有元素,然后是第二个,依此类推。我当然可以自己写,但我想知道在我做之前是否已经有办法完成这个看似有用的任务。 最佳答案 试试SelectMany。IEnumerableCollapse(IEnumerable>e){returne.SelectMany(x=>x);}该函数的作用是将一组IEnumerable>展平为一个IEnumerable。返回的数据将保留原始顺序。

c# - 断言 IEnumerables

由于我们公司不使用单元测试,所以我正在自学对自己的代码进行单元测试。我正在使用标准的.net测试框架进行一些非常基本的单元测试。我的一个方法返回一个IEnumerable我想测试它的输出。所以我创建了一个IEnumerable预计将对其进行测试。我以为我记得有一种方法可以Assert.ArePartsEqual或类似的东西,但我似乎找不到它。简而言之,我如何测试两个IEnumerable包含相同的字符串? 最佳答案 我不知道您指的是哪个“标准.net测试框架”,但如果它是VisualStudioTeamSystem单元测试内容,您可

c# - 创建 3 个 IEnumerables 的联合时实现 O(n) 性能的最简单方法是什么?

假设a、b、c都是List我想创建一个未分类的联合。虽然性能不是非常关键,但它们每个可能有10,000个条目,所以我热衷于避免O(n^2)解决方案。AFAICT,就不同类型而言,MSDN文档并未说明联合的性能特征。我的直觉告诉我,如果我只是做a.Union(b).Union(c),这将花费O(n^2)时间,但是newHashset(a).Union(b).Union(c)将是O(n)。有没有人有任何文件或指标来证实或否定这个假设? 最佳答案 你应该使用Enumerable.Union因为它和HashSet一样高效方法。复杂度为O(n

c# - 如何同时遍历两个 IEnumerables?

我有两个枚举:IEnumerablelist1和IEnumerablelist2.我想同时遍历它们:foreach((a,b)in(list1,list2)){//useaandb}如果它们不包含相同数量的元素,则应抛出异常。执行此操作的最佳方法是什么? 最佳答案 你想要像Zip这样的东西LINQ运算符-但.NET4中的版本总是在任一序列完成时截断。MoreLINQimplementation有一个EquiZip方法,它会抛出一个InvalidOperationException。varzipped=list1.EquiZip(li