c# list<user> list中有重复的数据,去掉重复的数据,或删掉重复的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# list<user> list中有重复的数据,去掉重复的数据,或删掉重复的数据相关的知识,希望对你有一定的参考价值。

是在一个数组中

如果已经有重复的数据在list里面了,可以先根据某个属性进行排序,然后再从头开始逐个对比数据,有重复的就remove掉。我不晓得list有没有自带的去重复函数,可以去研究下。
另外,在将数据加入到list的时候,可以先对list进行查找,看是否当前添加的数据存在否,如果存在,则不进行添加,不存在才加到list追问

能不能给的代码

参考技术A // 扩展IEnumerable<T>
static class ExternEnumerable 
        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;
                
            
        
    
    
    // 筛选去重调用
     IEnumerable<User> ie = list; // 先转换为IEnumerable接口类型
     ie=ie.DistinctBy<User,string>(u=>u.DatasName+"|"+u.DatasType+"|"+u.DatasValue);

本回答被提问者采纳
参考技术B list=list.Distinct().ToList();追问

没作用

c#中list绑定datagridview为啥不显示数据

public class Users

public ObjectId _id;
public string Name get; set;
public string Career set; get;
public string Name1 get; set;
public string Identity get; set;

List<Users> a = new List<Users>();
dataGridView1.DataSource = a;
我想先查询一下如在textBox中输入一值查询,将查询后的数据存入a中,然后和在dataGridView显示出来,为什么只显示了Name,Career,Name1,Identity的列明却没有显示数据?

在学习DataGridView 和List<T>绑定时发现DataGridView不会显示数据。后来发现要用类的属性才能正常显示,如果直接用类的字段等来显示,则无法显示数据。
代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication20

public partial class Form1 : Form

public Form1()

InitializeComponent();


private void Form1_Load(object sender, EventArgs e)


dgv_message.GridColor = Color.Blue;
//设置datagridview颜色
dgv_message.DataSource = new List<student>()
//设置datagridview数据来源来自List <student>

new student()sName="小李",Age=20,
new student()sName="小张",Age=40,
new student()sName="小王",Age=60,
new student()sName="小黄",Age=22
;
//对List <student>赋值
dgv_message.Columns[0].HeaderText = "姓名";
dgv_message.Columns[1].HeaderText = "年龄";
//设置datagridview列名


//定义class student并实现读写赋值
public class student

private string name;
private int age;

public string sName

get return name;
set name = value;


public int Age

get return age;
set age =value ;




如果把student中类变成以下代码,则无法显示:原因没有读写赋值
public class student

public string sName;
public int Age;
参考技术A 建议你再仔细看下datagridview的数据操作资料,百分之八九十可能是你代码没写对,确保代码写全,有问题可以自己加断点调试,培养好这个习惯可以给你带来很大的收获。本回答被提问者采纳 参考技术B 看你代码你只是new了一个users集合 并没有往集合中添加数据啊 参考技术C 字段要数据绑定到对应列

以上是关于c# list<user> list中有重复的数据,去掉重复的数据,或删掉重复的数据的主要内容,如果未能解决你的问题,请参考以下文章

c#中list绑定datagridview为啥不显示数据

c#如何把一list<> 复制到 另一个list<>

C# 中的“List.Remove”不删除项目?

C# 从 List<List<int>> 中删除重复项

在 C# 中,是不是可以将 List<Child> 强制转换为 List<Parent>?

从 List<OwnStruct> 返回 List<T> 的方法,其中 List<T> 仅包含 List 中所有 OwnStructs 的一个属性(C#)[重复]