首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用LINQ对序列中的相同值进行分组?

如何使用LINQ对序列中的相同值进行分组?
EN

Stack Overflow用户
提问于 2012-05-26 20:07:02
回答 4查看 876关注 0票数 4

我有一个序列。例如:

代码语言:javascript
复制
new [] { 10, 1, 1, 5, 25, 45, 45, 45, 40, 100, 1, 1, 2, 2, 3 }

现在我必须在不改变整体顺序的情况下删除重复的值。对于上面的序列:

代码语言:javascript
复制
new [] { 10, 1, 5, 25, 45, 40, 100, 1, 2, 3 }

如何使用LINQ做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-05-26 22:00:12

代码语言:javascript
复制
var list = new List<int> { 10, 1, 1, 5, 25, 45, 45, 45, 40, 100, 1, 1, 2, 2, 3 };
        List<int> result = list.Where((x, index) =>
        {
            return index == 0 || x != list.ElementAt(index - 1) ? true : false;
        }).ToList();

这将返回您想要的内容。希望这能帮上忙。

票数 3
EN

Stack Overflow用户

发布于 2012-05-26 22:00:00

代码语言:javascript
复制
var list = new List<int> { 10, 1, 1, 5, 25, 45, 45, 45, 40, 100, 1, 1, 2, 2, 3 };

var result = list.Where((item, index) => index == 0 || list[index - 1] != item);
票数 3
EN

Stack Overflow用户

发布于 2012-05-26 20:10:30

您可以使用Contains和preserve

代码语言:javascript
复制
List<int> newList = new List<int>();

foreach (int n in numbers)
    if (newList.Count == 0 || newList.Last() != n)
       newList.Add(n);
var newArray = newList.ToArray();

输出:

10、1、5、25、45、40、100、1、2、3

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

https://stackoverflow.com/questions/10766072

复制
相关文章

相似问题

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