Список групп и сумм объектов
Привет Друзья,
У меня есть XML, и мне нужна группа и сумма
YearlyAmts->netAmount
на основе Account -> Type
. Я де - сериализации XML и сделать его как объект. теперь мне нужно применить запрос к объекту. Я могу группировать и суммировать годовую сумму, но мое требование заключается в том, что при группировке необходимо также учитывать тип счета.Ожидаемый Результат
Тип Год NetAmount
401k 2016 5000
VA 2016 40000
Ниже приведен пример xml
<YearlyContributions> <Item1> <contribution> <ContributionId>4</ContributionId> <CType>profitsharing</CType> <CSubType>Amount</CSubType> <TaxTreatment>PreTax</TaxTreatment> <Account> <AccountID>5</AccountID> <Type>401K</Type> <LimitGrp>401K</LimitGrp> <AcClient> <birthyear>1971</birthyear> <ClientID>2</ClientID> <endOfAnalysisYear>2066</endOfAnalysisYear> <Isprimary>N</Isprimary> <retirementYear>2040</retirementYear> </AcClient> <MarketValue>30000</MarketValue> <VAAccountType/> </Account> <income> <IncomeID>2</IncomeID> <Type>SB</Type> <Client> <birthyear>1971</birthyear> <ClientID>2</ClientID> <endOfAnalysisYear>2066</endOfAnalysisYear> <Isprimary>N</Isprimary> <retirementYear>2040</retirementYear> </Client> <OwnershipType>Single</OwnershipType> <TaxExempt>N</TaxExempt> <CertainGauranteePeriod>0</CertainGauranteePeriod> <SurvivorshipPercent>0</SurvivorshipPercent> <exclusionratio>0</exclusionratio> <ExclusionRatioExpectedDeathAge>0</ExclusionRatioExpectedDeathAge> <AmountPeriodID>4</AmountPeriodID> </income> <AmountPeriodID>0</AmountPeriodID> </contribution> <stateofmortality/> <YearlyAmts> <Item1> <year>2016</year> <netAmount>50000</netAmount> </Item1> <Item2> <year>2017</year> <netAmount>51000</netAmount> </Item2> <Item3> <year>2018</year> <netAmount>52020</netAmount> </Item3> </YearlyAmts> </Item1> <Item2> <contribution> <ContributionId>5</ContributionId> <CType>profitsharing</CType> <CSubType>Percent</CSubType> <TaxTreatment>PreTax</TaxTreatment> <Account> <AccountID>9</AccountID> <Type>VA</Type> <LimitGrp>401K</LimitGrp> <AcClient> <birthyear>1970</birthyear> <ClientID>1</ClientID> <endOfAnalysisYear>2065</endOfAnalysisYear> <Isprimary>Y</Isprimary> <retirementYear>2039</retirementYear> </AcClient> <MarketValue>30000</MarketValue> <VAAccountType>401K</VAAccountType> </Account> <income> <IncomeID>1</IncomeID> <Type>SB</Type> <Client> <birthyear>1970</birthyear> <ClientID>1</ClientID> <endOfAnalysisYear>2065</endOfAnalysisYear> <Isprimary>Y</Isprimary> <retirementYear>2039</retirementYear> </Client> <OwnershipType>Single</OwnershipType> <TaxExempt>N</TaxExempt> <CertainGauranteePeriod>0</CertainGauranteePeriod> <SurvivorshipPercent>0</SurvivorshipPercent> <exclusionratio>0</exclusionratio> <ExclusionRatioExpectedDeathAge>0</ExclusionRatioExpectedDeathAge> <AmountPeriodID>3</AmountPeriodID> </income> <AmountPeriodID>0</AmountPeriodID> </contribution> <stateofmortality/> <YearlyAmts> <Item25> <year>2016</year> <netAmount>40000</netAmount> </Item25> <Item26> <year>2017</year> <netAmount>40800</netAmount> </Item26> <Item27> <year>2018</year> <netAmount>41616</netAmount> </Item27> </YearlyAmts> </Item2> </YearlyContributions>
Недавно добавлено: структура класса
public class YearlyContributions { public List<ContributionItem> Item { get; set; } } public class ContributionItem { public Contribution Contribution { get; set; } public string stateofmortality { get; set; } public YearlyAmt YearlyAmts { get; set; } } public class Contribution { public int ContributionId { get; set; } public string CType { get; set; } public string CSubType { get; set; } public string TaxTreatment { get; set; } public Account Account { get; set; } public Income Income { get; set; } public int AmountPeriodID { get; set; } } public class Account { public int AccountID { get; set; } public string Type { get; set; } public string LimitGrp { get; set; } public Client AcClient { get; set; } public double MarketValue { get; set; } public string VAAccountType { get; set; } } public class Client { public int birthyear { get; set; } public int ClientID { get; set; } public int endOfAnalysisYear { get; set; } public string Isprimary { get; set; } public int retirementYear { get; set; } } public class Income { public int IncomeID { get; set; } public string Type { get; set; } public Client Client { get; set; } public string OwnershipType { get; set; } public string TaxExempt { get; set; } public double CertainGauranteePeriod { get; set; } public double SurvivorshipPercent { get; set; } public double exclusionratio { get; set; } public double ExclusionRatioExpectedDeathAge { get; set; } public int AmountPeriodID { get; set; } } public class YearlyAmt { public List<YearlyItem> YearlyAmts { get; set; } } public class YearlyItem { public int year { get; set; } public double NetAmount { get; set; } }
Что я уже пробовал:
var lstcon = ycon.Item .SelectMany(s => s.YearlyAmts.YearlyAmts) .GroupBy(yr => yr.year) .Select(g => new { Key = g.Key, Value = g.Sum(s => s.NetAmount), }) .ToList();
Maciej Los
Мне действительно интересно, как вы десериализовали такую структуру данных... Нет одинаковых объектов: Item1, Item2 и т. д.
jinesh sam
используя выражение XPath "начинается с"