C# 如何排除属性,然后比较列表

C# 如何排除属性,然后比较列表,c#,visual-studio-2010,c#-4.0,tdd,C#,Visual Studio 2010,C# 4.0,Tdd,在我的单元测试方法中,创建了两个对象列表 i、 e一个是期望值列表,另一个是实际值列表 expectedValueList={a=1,b=2,c=3,d=4} actualvalueList={d=4,b=2,c=3,a=1} 我是在比较 CollectionAssert.AreEqual(expectedValueList, actualvalueList); 我需要从两个列表中排除“c”属性,然后比较两个列表是否相等?假设expectedValueList是一个字典 var expec

在我的单元测试方法中,创建了两个对象列表

i、 e一个是
期望值列表
,另一个是
实际值列表

expectedValueList={a=1,b=2,c=3,d=4}

actualvalueList={d=4,b=2,c=3,a=1}
我是在比较

CollectionAssert.AreEqual(expectedValueList, actualvalueList);

我需要从两个列表中排除
“c”属性
,然后比较两个列表是否相等?

假设
expectedValueList
是一个
字典

var expectedValueList=newsorteddictionary{{“a”,1},{“b”,2},{“c”,3},{“d”,4};
预期价值清单。删除(“c”);
var actualValueList=新的排序字典{{“d”,4},{“b”,2},{“c”,3},{“a”,1};
实际价值清单。删除(“c”);
//如果订单不同,将返回false。
CollectionAssert.AreEqual(期望值列表、实际值列表);

假设两个列表都是
List
,其中
CustomType
有两个属性。现在需要一种方法来比较两个列表,但忽略一个值

如果订单重要,我将使用:


请注意,如果我的假设是正确的,您需要覆盖
Equals
(和
GetHashCode
)。否则,
SequenceEqual
将只是比较参考等式。

什么是
expectedValueList
actualvalueList
?它是系统的集合。集合IList
IList
?您如何识别
“c”
?这是否与您上午提出的问题相同。不要发布重复:这是系统的。我认为鉴于Sam Leach必须处理的信息,dv是苛刻的。(反对票)
var expectedValueList = new SortedDictionary<string, int> { { "a", 1 }, { "b", 2 }, { "c", 3 }, { "d", 4 } };
expectedValueList.Remove("c");

var actualValueList = new SortedDictionary<string, int> { { "d", 4 }, { "b", 2 }, { "c", 3 }, { "a", 1 } };
actualValueList.Remove("c");

// Will return false if the order is different.
CollectionAssert.AreEqual(expectedValueList, actualvalueList);
var expectedWithoutC = expectedValueList.Where(t => t.Name != "c");
var actualWithoutC = actualvalueList.Where(t => t.Name != "c");
bool bothEqual = expectedWithoutC.SequenceEqual(actualWithoutC);