首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除列表中的重复项

删除列表中的重复项
EN

Stack Overflow用户
提问于 2012-01-06 17:34:46
回答 2查看 527关注 0票数 1

我得到了一个对象列表(ip,domainname)。并希望在它们中找到副本,并删除那些在域名前面没有www的副本。

所以如果它在名单上

代码语言:javascript
复制
192.168.0.0   www.stackoverflow.com
192.168.0.1   stackoverflow.com

我想移除stackoverflow.com。

到目前为止,这是我的代码,我将对象列表传递给这个函数:

代码语言:javascript
复制
static List<ServerBindings> removeDuplicates(List<ServerBindings> inputList)
      {
          Dictionary<string, string> uniqueStore = new Dictionary<string, string>();
          List<ServerBindings> finalList = new List<ServerBindings>();
          foreach (var currValue in inputList)
          {
              if (!uniqueStore.ContainsKey(currValue.DomainName))
              {
                      uniqueStore.Add(currValue.DomainName, currValue.IPAddress);
                      finalList.Add(new ServerBindings { DomainName = uniqueStore.Keys.ToString(), IPAddress = uniqueStore.Values.ToString() });
              }
          }

          return finalList;
      }

我试过linq,但由于我是新手,我试着使用groupby,但不知道如何说“在域名前面有www的地方选择那些”。

编辑:

我的意思是,linq查询只选择前面有www的查询,忽略without....to查询,如果列表中有www.test.com、test.com和test3.com,最终结果应该是www.test.com和test3.com。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-06 17:39:45

代码语言:javascript
复制
var result=inputList.Where(x=>x.DomainName.StartsWith("www.")).Distinct();

如果由于绑定是不同的对象,所以distinct无法完成任务,则可以执行

代码语言:javascript
复制
var result=from x in list
      where x.DomainName.StartsWith("www.")
      group x by x.DomainName into domain
      select new ServerBindings { 
        DomainName=domain.Key,
        IPAddress=domain.Select (d =>d.IPAddress ).First ()
      };
票数 2
EN

Stack Overflow用户

发布于 2012-01-06 17:43:25

像这样的事情应该能做好所有的事情:

代码语言:javascript
复制
serverBindings
    .Select(sb => new { Normalized = sb.DomainName.StartsWith("www.") ? sb.DomainName.Substring(4) : sb.DomainName, HasLeadingWWW = sb.DomainName.StartsWith("www."), Binding = sb })
    .GroupBy(sbn => sbn.Normalized)
    .Select(g => g.OrderBy(sbn => sbn.HasLeadingWWW).First.Binding);

注意:我还没有测试它,可能需要一些调整。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8761960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档