例如,在伪代码中我想这样做:
foreach(i in List) foreach(j in List.Except(i)) Compare(j,i)
我知道Except采用了一个可枚举而不是单个项目,可能不是最好的主意,但它应该说明我的意图.
有任何想法吗?
更新:
我想这个问题有点模糊.目标是迭代列表两次(使用liNQ),同时跳过对(i,i);无论比较(i,j)实际上做什么与我的问题无关.
那么有两种情况,一种是(i,j)==(j,i)和(i,j)!=(j,i).对于前者,乔治·达克特(George Duckett)在下面的跳过解决方案可以解决这个问题,但后者呢?这是我最初使用Except的地方,以便评估(i,j)和(j,i).
所以要澄清一下,除了List.Except(Enumerable.Repeat(i,1))之外,是否有更好的方法可以跳过列表中的元素?
@H_403_18@解决方法@H_419_20@ 这将给你所有对,假设对的顺序无关紧要(比较(i,j)==比较(j,i)):var test = from i in List from j in List.Skipwhile(j => j != i) where i != j // Remove the self-comparison if you want to select Compare(i,j);@H_403_18@ @H_403_18@ 总结
以上是内存溢出为你收集整理的c# – LINQ中的高效列表自我比较?全部内容,希望文章能够帮你解决c# – LINQ中的高效列表自我比较?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)