Vb.net 比较通用列表?

Vb.net 比较通用列表?,vb.net,compare,generic-list,Vb.net,Compare,Generic List,我在vb.net中工作。我有两个用户定义类的通用列表-让我们称这个类为学生 我正在调用一个数据库,该数据库给了我一个数据集,我将其排列到一个学生的通用列表中。学生将拥有诸如:名字、姓氏、电话、地址等属性 然后,我调用一个国外的web api,将数据重新安排到另一个学生的通用列表中——同一个班级 现在,如果数据库端与我在调用web api时得到的有任何差异,我将尝试逐个进行比较。有没有一种简单的方法可以将这样的类的泛型列表与另一个对象进行比较?我无法确定项目的顺序,因此无法进行直接比较,但除了遍历

我在vb.net中工作。我有两个用户定义类的通用列表-让我们称这个类为学生

我正在调用一个数据库,该数据库给了我一个数据集,我将其排列到一个学生的通用列表中。学生将拥有诸如:名字、姓氏、电话、地址等属性

然后,我调用一个国外的web api,将数据重新安排到另一个学生的通用列表中——同一个班级

现在,如果数据库端与我在调用web api时得到的有任何差异,我将尝试逐个进行比较。有没有一种简单的方法可以将这样的类的泛型列表与另一个对象进行比较?我无法确定项目的顺序,因此无法进行直接比较,但除了遍历通用列表并在其他通用列表中搜索匹配项之外,我还缺少一种明显的方法

让我们叫他们<代码>数据库列表和
APIList

有以下几种可能性:

  • 存在于数据库中,但不在API中
  • 存在于API中,但不存在于数据库中
  • 两者都存在,但两者之间不匹配

  • 我希望最后有三份新的清单,以便我能采取适当的行动。现在我唯一能做到这一点的方法就是遍历列表,这似乎是个坏主意——一定有更好的方法。

    有一个比较泛型序列的方法。您可能需要首先对集合进行排序,并且需要对项目进行实现。

    学生类可以包含一个(或两个)属性来存储状态和结果,而不是为相同的数据创建三个列表。结果可能可以用LINQ计算。当然。。。任何一种跟踪项目的方法都可以,但问题更多的是如何找到这些项目,而不是如何跟踪它们。如果我们比较一个字符串的通用列表,它是一个简单的.contains()或indexof(),但是因为类中有一堆属性,我试图避免一个巨大的循环。这两个数据源肯定有一个像StudentID一样的公共键吗?如果是这样,请使用字典快速确定webStudent记录是否与
    ContainsKey
    匹配或在localDBList中。如果不是,请将其添加为WebOnly状态。是的,您正在循环,但只有一次才能将所有三种可能性作为结果代码放入一个列表中。LINQ然后可以返回与此或该状态/结果匹配的学生(或ID列表)。非常好的帮助-感谢您对此项目和链接项目的指导。