当前位置:  开发笔记 > 编程语言 > 正文

整个if prevValue!= currValue循环中的东西

如何解决《整个ifprevValue!=currValue循环中的东西》经验,为你挑选了1个好方法。

假设我们有一个列表{a,a,a,b,b,c,c}

我们想循环遍历列表并在项值更改时进行某种更改...例如:

prevEmployer = String.empty;
foreach(Person p in PersonList){
  if(p.Employer != prevEmployer){ 
    doSomething(); 
    prevEmployer = p.Employer;
  }
  ... more code
}

有没有替代方案?它看起来很狡猾.

编辑:使代码对于手头的问题更加真实.



1> Marc Gravell..:

你想要不同的价值观吗?即会有{a,a,a,b,b,a,c,c,a}吗?如果没有,你可以使用LINQ:

foreach(string s in theList.Distinct()) {
   doSomething(); // with s
}

重新更新; 也许使用类似的东西DistinctBy:

foreach(var item in data.DistinctBy(x=>x.Foo)) {
    Console.WriteLine(item.Bar);
}

public static IEnumerable DistinctBy(
        this IEnumerable source, Func selector) {
    var set = new HashSet();
    foreach (var item in source) {
        if (set.Add(selector(item))) {
            yield return item;
        }
    }
}

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有