2013-08-23 3 views
-6

В моем методе модульного тестирования создаются, который имеет два списка объектов,как исключить свойство, а затем сравнить список

Один т.е. является expectedValueList и другой actualvalueList.

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

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

я сравнение по

CollectionAssert.AreEqual(expectedValueList, actualvalueList); 

Мне нужно, чтобы исключить "c" property как из списка, а затем я хочу сравнить два списка, равный или нет?

+1

Какая коллекция 'ожидаетсяValueList' и' actualvalueList'? –

+0

Это из System.Collection IList – kumar

+0

'IList '? Как вы определяете '' c ''? –

ответ

0

Предполагая, expectedValueList является Dictionary<string, int>.

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); 
+0

: это из System.Collection IList – kumar

+0

«Список» чего? –

+1

Я думаю, что dv суровый, учитывая, какую информацию должен был выполнить Сэм Лич. (счетчик проголосовал) – Sayse

1

Предположив, что оба списка List<CustomType> где CustomType имеет два свойства. Теперь вам нужен способ сравнить оба списка, но игнорировать одно значение.

Если вопросы заказа я хотел бы использовать Enumerable.SequenceEqual:

var expectedWithoutC = expectedValueList.Where(t => t.Name != "c"); 
var actualWithoutC = actualvalueList.Where(t => t.Name != "c"); 
bool bothEqual = expectedWithoutC.SequenceEqual(actualWithoutC); 

Обратите внимание, что вам нужно переопределить EqualsGetHashCode), если мое предположение было правильным. В противном случае SequenceEqual просто сравним для ссылочного равенства.

Смежные вопросы