急救!! 循环判断把list中重复数据去掉 放在另一个list中

151. 2021-01-29 04:06:51
循环判断把list中重复数据去掉 放在另一个list中。
...全文
312 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gs0038 2021-02-02
  • 打赏
  • 举报
回复
如果这个list很长的话建议你设置key做成个字典,这样查找可以更快;Dictionary用这个把,如果又为了不影响顺序查询,可以先list.add(obj),然后再obj添加到字典
shawn xia 2021-02-01
  • 打赏
  • 举报
回复
引用 9 楼 TK0714. 的回复:
感谢各位,想问一下我的这个list_是List<String>型的判断包含时可以判断是否包含UserKey 要是List<UserInfo>我要怎判断是否包含UserKey呢?
                for (int i = 0; i < orgU.Count(); i++)
                {
                    if (!list_.Any(x => x.UserKey == orgU[i].UserKey))
                    {
                        //to do
                    }
                }
151. 2021-01-29
  • 打赏
  • 举报
回复
感谢各位,想问一下我的这个list_是List<String>型的判断包含时可以判断是否包含UserKey 要是List<UserInfo>我要怎判断是否包含UserKey呢?
ziqi0716 2021-01-29
  • 打赏
  • 举报
回复
引用 7 楼 ziqi0716 的回复:
换个字典版本的:

     var list = new List<int>() { 1, 1, 2, 2, 2, 5, 8, 5, 5, 8, 5, 5, 48, 85, 5, 54, 85 };
            Dictionary<int,int> dic=new Dictionary<int, int>();
            foreach (var i in list)
            {
                dic[i] = i;
            }
            var newList = dic.Keys; 
            foreach (var i in newList)
            {
                Console.WriteLine(i);
            }
第七行可以输出成List<T>: var newList = dic.Keys.ToList();
ziqi0716 2021-01-29
  • 打赏
  • 举报
回复
换个字典版本的:

     var list = new List<int>() { 1, 1, 2, 2, 2, 5, 8, 5, 5, 8, 5, 5, 48, 85, 5, 54, 85 };
            Dictionary<int,int> dic=new Dictionary<int, int>();
            foreach (var i in list)
            {
                dic[i] = i;
            }
            var newList = dic.Keys; 
            foreach (var i in newList)
            {
                Console.WriteLine(i);
            }
datafansbj 2021-01-29
  • 打赏
  • 举报
回复
这是个基本问题,需要首先明白什么是重复的数据。引用类型和值类型的处理是不一样的。引用类型只要值相同就认为是重复的,引用类型必须是同一对象引用才是重复的。详见 == 与 Equals 的联系和区别,把这个弄明白了,其他的就好办了,
weixin_42037497 2021-01-29
  • 打赏
  • 举报
回复
举例 list.Select(p => p.name).Distinct().ToList(); //去除name重复的list数据
shawn xia 2021-01-29
  • 打赏
  • 举报
回复
            List<int> List = new List<int>() { 1, 2, 3, 12, 2, 3 };
            List<int> NewList = new List<int>();

            //去重
            //var NewList = List.Distinct();

            //循环去重
            foreach (var item in List)
            {
                if (!NewList.Contains(item))
                {
                    NewList.Add(item);
                }
            }
郑剑1996 2021-01-29
  • 打赏
  • 举报
回复
写这个拓展他不香吗
郑剑1996 2021-01-29
  • 打赏
  • 举报
回复


public static class ObjectExtensions
    {    
    public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
        {
            HashSet<TKey> seenKeys = new HashSet<TKey>();
            foreach (TSource element in source)
            {
                if (seenKeys.Add(keySelector(element)))
                {
                    yield return element;
                }
            }
        }
    }


/// <summary>
/// 返回题目数据
/// </summary>
[Serializable]
public class QuestionResult
{
    /// <summary>
    /// 编号
    /// </summary>
    public long Id { get; set; }
 
    /// <summary>
    /// 题目内容
    /// </summary>
    public string Title { get; set; }
 
}

list.DistinctBy(e => new { e.Id }).ToList();
shawn_yang 2021-01-29
  • 打赏
  • 举报
回复
要看list类型是对象还是单一数据类型

单一数据类型直接比较是否重复

对象,需要另外写compare

110,502

社区成员

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

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

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