关于用C#对List<>中去除重复元素的问题!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于用C#对List<>中去除重复元素的问题!相关的知识,希望对你有一定的参考价值。

class Program

static void Main(string[] args)

string basePath = @"D:\Doc\wordcount.mdb";
string connstr = "Provider=Microsoft.Jet.OLEDB.4.0 ;Data Source=" + basePath;
string sql = "select * from [wordcount]";

List<WordInfo> list = new List<WordInfo>();
using (OleDbConnection conn = new OleDbConnection(connstr))

try

OleDbCommand cmd = new OleDbCommand(sql, conn);
conn.Open();
OleDbDataReader reader = cmd.ExecuteReader();
while (reader.Read())

WordInfo tmp = new WordInfo();
tmp.word = reader.GetString(1);
tmp.flag = 0;
list.Add(tmp);

reader.Close();
conn.Close();

catch (Exception ex)

Console.WriteLine("异常:" + ex.Message);


Console.WriteLine(list.Count);


public struct WordInfo

public string word;
public int flag;

以上是我的部分代码,我想做的是,去除list中“word”字符串重复的结构体,请问代码该如何书写,我自己写的总是提示数组超出索引而报错,请各位大神指教,真的很急!

以下代码有点琐碎,不过很明了
List<WordInfo> list = new List<WordInfo>();
WordInfo temp;
for (int i = 0; i < 10; i++)

    temp = new WordInfo();
    temp.word = "word";
    temp.flag = i;
    list.Add(temp);

for (int i = 0; i < 10; i++)

    temp = new WordInfo();
    temp.word = "word1";
    temp.flag = i;
    list.Add(temp);

var aa = from ll in list where ll.word == "word" select ll;// Linq 查找出所有 WordInfo 的word的值为 “word" 的元素
if(aa.Count()>0)// 判断是否有 word 为 “word" 的元素

    var temp1 = aa.ToList()[0];// 保留一个 word的值为 “word" 的元素
    while (aa.Count()>0)
    
        list.Remove( aa.ToList()[0]);//移走所有 word的值为 “word" 的元素
    
    list.Add(temp1);// 再添加一个 word的值为 “word" 的元素

参考技术A 可以用list.Distinct(),去除重复元素

在JAVA中,两个List,要从第一个List中去除所有第二个List中与之重复的元素

例如List1<Employee>的内容是e1,e2,e3.而List2<Employee>的内容是e3,e4,e5.那么我要得到的的List3<Employee>的内容应该是e1,e2.求指教。不要拿一堆for循环给我。。。

java中,list是可以重复的,但是set就不能重复了。
在java中,list成为列表,而set则是集合,集合中的元素是不可以重复的,但是列表中的是可以的,所以,list里面的元素是可以重复的。
参考技术A 将List2转为Map,Employee属性作为key,对象为value,循环list1判断key是否在Map中 有就移除 参考技术B for(int i=0;i<list1.size();i++)
if(list2.contains(list1.get(i)))
list1.remove(i);
i--;


参考技术C List3 = List1;
List3.removeAll(List2);
参考技术D public static void main(String[] args)
List<String> firList = new ArrayList<String>();
firList.add("1");
List<String> twoList = new ArrayList<String>();
twoList.add("2");
twoList.add("3");
firList.removeAll(twoList);
System.out.println(firList.toString());

以上是关于关于用C#对List<>中去除重复元素的问题!的主要内容,如果未能解决你的问题,请参考以下文章

C#中 list<object> 去除重复的数据 求最简单的方法!!

去除list集合中重复项的几种方法

List集合去除重复元素,不打乱顺序(数组转List)

如何去除List集合中重复的元素

去除List重复元素

//去除list中的重复元素放入到 hashset中,l是 arrayList