Контроллер C# опускает свойство дочернего элемента XML - PullRequest
0 голосов
/ 29 января 2020

Моя задача - отладить довольно большой (и недокументированный) проект 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>

Любая помощь и объяснения приветствуются!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...