В настоящее время нет идиоматического способа достичь этого, но API достаточно гибок, чтобы сделать это, хотя и более громоздким способом.
Существует открытый вопрос об этой проблеме, в котором также перечислены некоторые решения.
С текущим API (версия 5.7.0) ваш опубликованный пример может быть подтвержденвключив только свойство List
, а затем исключив свойства, заканчивающиеся на "SomePropertyIDontCareAbout"
.
var list1 = new[]
{
new A
{
SomePropertyIDontCareAbout = "FOO",
List = new[]
{
new B()
{
PropertyToInclude = "BAR",
SomePropertyIDontCareAbout = "BAZ"
},
}
},
};
var list2 = new[]
{
new A
{
SomePropertyIDontCareAbout = "BOOM",
List = new[]
{
new B()
{
PropertyToInclude = "BAR",
SomePropertyIDontCareAbout = "BOOM"
},
}
},
};
// Assert
list1.Should().BeEquivalentTo(list2, opt => opt
.Including(e => e.List)
.Excluding(e => e.SelectedMemberPath.EndsWith(nameof(B.SomePropertyIDontCareAbout))));