Моя задача - отладить довольно большой (и недокументированный) проект ASP. NET, точнее, контроллер конечной точки, который выглядит следующим образом (сокращен и псевдонимирован мной, но в остальном не изменен):
namespace myAPI.Controllers
{
public class MyViewController: BaseController
{
private myContext _db => ServiceLocator.Db;
[ResponseType(typeof(IEnumerable<MyViewDto>))]
public IHttpActionResult GetView(int? selectedEntityId)
{
var overallViews = inputPages[0].MyViews.ToList();
for (int j = 1; j < inputPages.Count; j++)
{
var MyViewsTemp = inputPages[j].MyViews.
Where(x => x.Entity == selectedEntityId).ToList();
MyViews.AddRange(MyViewsTemp);
}
var result = myViews.GroupBy(x => x.Position).
Select(x => new MyViewDto
{
Adjustments = x.Sum(y => y.Adjustments),
children = x.Select(Mapper.Map<MyViewDto>), // <-- What exactly does this do?
PositionId = x.Key?.Id,
PositionName = x.Key?.Name,
Value = x.Sum(y => y.Value),
ValueAdjusted = x.Sum(y => y.ValueAdjusted),
});
return Ok(result);
}
}
}
Как и ожидалось, конечная точка выдает вложенную XML следующей структуры, но иногда определенные свойства, такие как ValueAdjusted
, являются пустыми для дочерних элементов (1-го уровня), которые я не понимаю .
Намеренное поведение: Если child i
является листовым узлом (= нет последующих потомков), ValueAdjusted = x.Sum(y => y.ValueAdjusted)
должен просто вернуть inputPages[i].ValueAdjusted
этого узел, или это?
Инженерный пример:
<MyViewDto xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<MyViews>
<MyViewDto>
<Adjustments>45818816</Adjustments>
<PositionId>10</PositionId>
<PositionName>Big Brother Bank</PositionName>
<Value>299792458.00</Value>
<children>
<RunoffViewDto>
<Adjustments i:nil="true"/>
<PositionId>10</PositionId>
<PositionName>Big Brother Bank</PositionName>
<SubPositionId>1</SubPositionId>
<SubPositionName>Assets A</SubPositionName>
<Value>19955366.62</Value>
<ValueAdjusted i:nil="true"/>
<children i:nil="true"/>
</RunoffViewDto>
<RunoffViewDto>
<Adjustments i:nil="true"/>
<PositionId>10</PositionId>
<PositionName>Big Brother Bank</PositionName>
<SubPositionId>2</SubPositionId>
<SubPositionName>Assets B</SubPositionName>
<Value>19955366.62</Value>
<ValueAdjusted i:nil="true"/>
<children i:nil="true"/>
<RunoffViewDto>
</MyViewDto>
</MyViews>
Любая помощь и объяснения приветствуются!