CollectionAssert.IsSubsetOf for public 静态列表总是失败

CollectionAssert.IsSubsetOf for public static Lists always fails

我正在为从 linq-to-sql 查询构建的两个 public 列表执行 CollectionAssert。当我为这些做 CollectionAssert 时,它总是失败,即使对于一个显然应该通过的测试集也是如此。

我什至在我的代码中做了一个快速测试,以确保我正确使用了 CollectionAssert。

        //This always passes
        List<string> testList1 = new List<string>();
        List<string> testList2 = new List<string>();
        testList1.Add("one");
        testList2.Add("two");
        testList2.Add("three");
        testList2.Add("one");
        CollectionAssert.IsSubsetOf(testList1, testList2);

        //This always fails 
        CollectionAssert.IsSubsetOf(memberOrganizations, member_Dim_Organization, "Error Matching Fields");

关于如何更正第二个断言的语法有什么想法吗?我附上了调试的屏幕截图 window。 Debug Screen Shot

我用一种方法定义列表结构的格式

namespace DefineStructure
{
    public class Results
    {
        public string OrgID { get; set; }

    }

这会在单独的

中加载数据
namespace Reporting.Member_Dim_Organization.ETL.QA
{
    public class LoadData
    {
    public static cDataContext oMain = new cDataContext();

    public static List<Results> oecMainResults = (from mo in oecMain.MemberOrganizations
                                                  orderby mo.OrgID
                                                  select new Results
                                             {
                                                 OrgID = (mo.OrgID).ToString() }).Take(1).ToList();

然后我在我的主程序中声明它

namespace Reporting.Main

{
    [Binding]
    public class Member_Dim_OrganizationsSteps
    {
      public static List<Results> memberOrganizations = LoadData.oecMainResults;
      public static List<Results> member_Dim_Organization = LoadData.reportingMasterResults;

这有助于澄清吗?

感谢您帮助正在尝试学习一些新技巧的老狗。

您假设如果两个集合具有具有相同 data 的实例,则它们是相等的,但默认情况下并非如此。听起来您需要覆盖 Results class 上的 EqualsGetHashCode 才能定义 "equality"。

有很多为自定义类型定义相等性的示例,其中大部分涉及将哈希码定义为定义相等性的字段的哈希码的组合。