C# 用lambda取List中重复的部分,name重复就算重复

qq_35092139 2016-06-27 11:02:05
如题,有没有大神用简单的办法取出,要不那种两层循环来取得,先谢过
...全文
7338 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37977607 2019-07-26
  • 打赏
  • 举报
回复
var duplicatevalue = list.GroupBy(p => p.Name).Where(g => g.Count() > 1).Select(p => p.Key).ToList();//已知Name字段值中有重复值,根据Name字段查出重复值 var sbarry = string.Join("','", duplicatevalue.ToArray()); var sdk = list.Where(p => sbarry.Contains(p.Name)).ToList();//找出符合条件的值重复的数据
qq_35092139 2016-06-27
  • 打赏
  • 举报
回复
引用 7 楼 starfd 的回复:
多个条件的话
GroupBy(p=>new{p.name,p.type,p.level})



还缺少什么步骤么,怎么不能复制回去了
错误 1 无法将类型“System.Collections.Generic.List<System.Linq.IGrouping<AnonymousType#1,StRtostpmy.Models.Resource>>”隐式转换为“System.Linq.IQueryable<StRtostpmy.Models.Resource>”。存在一个显式转换(是否缺少强制转换?) G:\公司版2016-6-17重复数据修改\StRtostpmy\StRtostpmy\Repository\ResourceRepository.cs 415 33 StRtostpmy
  • 打赏
  • 举报
回复
多个条件的话
GroupBy(p=>new{p.name,p.type,p.level})
qq_35092139 2016-06-27
  • 打赏
  • 举报
回复
哦,懂了,如果后面还有2个条件怎么分组 id name type level 1 车辆 图片 1 2 车辆 视频 2 3 工务 图片 3 4 车辆 图片 1 5 工务 图片 3 如果是name,type 和level都要相同的怎么取
正怒月神 2016-06-27
  • 打赏
  • 举报
回复
2楼正解
public static void Main(string[] args)
        {

            List<Test> t = new List<Test>() { 
                new Test(){id=1,name="车辆"},
                new Test(){id=2,name="车辆"},
                new Test(){id=3,name="飞机"},
                new Test(){id=4,name="火车"},
                new Test(){id=4,name="火车"},
            };

            var q = t.GroupBy(x => x.name).Where(x => x.Count() > 1).ToList();

            foreach (var item in q)
            {
                Console.WriteLine(item.Key);
            }

            Console.ReadLine();
        }
qq_35092139 2016-06-27
  • 打赏
  • 举报
回复
引用 2 楼 starfd 的回复:
list.GroupBy(p=>p.Name).Where(g=>g.Count()>1)
然后循环一次就可以了
问题是我不知道那些name会重复
qq_35092139 2016-06-27
  • 打赏
  • 举报
回复
数据大概是这样 id name ........... 1 车辆 2 车辆 3 机务 4 工务 5 供电 6 工务 我需要凡是name相同的最后都放到一个list中页面上要显示列表
  • 打赏
  • 举报
回复
list.GroupBy(p=>p.Name).Where(g=>g.Count()>1)
然后循环一次就可以了
xdashewan 2016-06-27
  • 打赏
  • 举报
回复
http://www.cnblogs.com/qinpengming/archive/2012/12/03/2800152.html
qq_35092139 2016-06-27
  • 打赏
  • 举报
回复
问题解决了,感谢11楼大神,但是还有个问题每个重复分组的最后一条数据获取不到
qq_35092139 2016-06-27
  • 打赏
  • 举报
回复
queryable = queryable.GroupBy(p => new { p.ContentFile, p.SoundFile, p.TextFile }).Where(x => x.Count() > 1);这样也不行 错误 1 无法将类型“System.Linq.IQueryable<System.Linq.IGrouping<AnonymousType#1,StRtostpmy.Models.Resource>>”隐式转换为“System.Linq.IQueryable<StRtostpmy.Models.Resource>”。存在一个显式转换(是否缺少强制转换?) G:\公司版2016-6-17重复数据修改\StRtostpmy\StRtostpmy\Repository\ResourceRepository.cs 415 33 StRtostpmy
qq_35092139 2016-06-27
  • 打赏
  • 举报
回复
public IQueryable<Resource> List(int resourceType, string keyword, ResourceLevel level)
        {
            var queryable = dbContext.Resources.AsQueryable();
            if (!string.IsNullOrEmpty(keyword))
            {
                char[] splitChar = { ' ' };
                string[] strArr = keyword.Split(splitChar);
                foreach (string str in strArr)
                {
                    queryable = queryable.Where(r => (r.Keyword.Contains(str) || r.Title.Contains(str)) && (r.Type == (ResourceType)resourceType && r.Level == level));
                }
            }
            else
            {
                if (resourceType == -2)
                {
                    queryable = queryable.GroupBy(p => p.ContentFile).Where(x => x.Count() > 1).AsQueryable();
                }
                else {
                    queryable = queryable.Where(r => r.Type == (ResourceType)resourceType && r.Level == level);
                }
            }
            return queryable;
        }
  • 打赏
  • 举报
回复
你干嘛ToList呢,两者结果都不一样的

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧