2014-01-09 67 views
0

我有一個對象Rate[]。這來自返回一個名爲Rate[]的對象的Web服務。 Rate[]的XML如下所示:LINQ不同於某些XML節點

<b:Rate> 
    <b:Deductible>0</b:Deductible> 
    <b:FormType>AO</b:FormType> 
    <b:PlanCode>843</b:PlanCode> 
    <b:Miles>0</b:PlanMiles> 
    <b:PlanTerm>1</b:PlanTerm> 
    <b:Prefix>PR</b:Prefix> 
    <b:Retail>269</b:Retail> 
    <b:RiskPlan>RPR1</b:RiskPlan> 
    <b:Term>1/3</b:Term> 
</b:Rate> 
<b:Rate> 
    <b:Deductible>0</b:Deductible> 
    <b:FormType>AO</b:FormType> 
    <b:PlanCode>843</b:PlanCode> 
    <b:Miles>0</b:PlanMiles> 
    <b:PlanTerm>2</b:PlanTerm> 
    <b:Prefix>PR</b:Prefix> 
    <b:Retail>269</b:Retail> 
    <b:RiskPlan>RPR1</b:RiskPlan> 
    <b:Term>1/3</b:Term> 
</b:Rate> 
<b:Rate> 
    <b:Deductible>0</b:Deductible> 
    <b:FormType>AO</b:FormType> 
    <b:PlanCode>843</b:PlanCode> 
    <b:Miles>0</b:PlanMiles> 
    <b:PlanTerm>3</b:PlanTerm> 
    <b:Prefix>PR</b:Prefix> 
    <b:Retail>269</b:Retail> 
    <b:RiskPlan>RPR1</b:RiskPlan> 
    <b:Term>1/3</b:Term> 
    <b:VehicleClass>1</b:VehicleClass> 
</b:Rate> 
<b:Rate> 
    <b:Deductible>0</b:Deductible> 
    <b:FormType>AO</b:FormType> 
    <b:PlanCode>843</b:PlanCode> 
    <b:Miles>0</b:PlanMiles> 
    <b:PlanTerm>4</b:PlanTerm> 
    <b:Prefix>PR</b:Prefix> 
    <b:Retail>269</b:Retail> 
    <b:RiskPlan>RPR2</b:RiskPlan> 
    <b:Term>4/6</b:Term> 
</b:Rate> 
<b:Rate> 
    <b:Deductible>0</b:Deductible> 
    <b:FormType>AO</b:FormType> 
    <b:PlanCode>843</b:PlanCode> 
    <b:Miles>0</b:PlanMiles> 
    <b:Term>5</b:PlanTerm> 
    <b:Prefix>PR</b:Prefix> 
    <b:Retail>269</b:Retail> 
    <b:RiskPlan>RPR2</b:RiskPlan> 
    <b:Term>4/6</b:Term> 
</b:Rate> 
<b:Rate> 
    <b:Deductible>0</b:Deductible> 
    <b:FormType>AO</b:FormType> 
    <b:PlanCode>843</b:PlanCode> 
    <b:Miles>0</b:PlanMiles> 
    <b:PlanTerm>6</b:PlanTerm> 
    <b:Retail>269</b:Retail> 
    <b:RiskPlan>RPR2</b:RiskPlan> 
    <b:Term>4/6</b:Term> 
</b:Rate> 
    ... etc .. 
<b:Rate> 
    <b:Deductible>0</b:Deductible> 
    <b:FormType>AO</b:FormType> 
    <b:PlanCode>843</b:PlanCode> 
    <b:Miles>0</b:PlanMiles> 
    <b:PlanTerm>84</b:PlanTerm> 
    <b:Retail>269</b:Retail> 
    <b:RiskPlan>RPR2</b:RiskPlan> 
    <b:Term>73/84</b:Term> 
</b:Rate> 

這些價格都具有相同的價格。

而不是顯示1 ... 2 ... 3 ... 4 ...一直到84個術語,我想在費率中使用<Term>對這些費率進行分組。

示例:將所有<Term>1/3</Term>分組在一起。

注:也有不同<RiskPlan>:RPR1,RPR2和RPR3也需要考慮。

我目前有:

var ratesGroupBy = from r in rates.GroupBy(r => new { r.Term }).Select(g => g.First()) 
        select r; 

我的問題是

這只是返回RPR1和特別條款。它還需要考慮不同的RiskPlans及其獨特術語。匿名類型實例,用string RiskPlanList<string> Terms性能

RPR1 => 1/3, 4/6, 7/9, 10/12, etc... 
RPR2 => 1/3, 4/6, 7/9, 10/12, etc... 
RPR3 => 1/3, 4/6, 7/9, 10/12, etc... 
+0

而你的問題? –

+0

@ L.B - 我該怎麼做?我的代碼沒有做我需要做的事情。 – Turp

回答

0
var ratesGroupBy = rates.GroupBy(x => x.RiskPlan) 
         .Select(g => new { RiskPlan = g.Key, Terms = g.Select(x => x.Term).Distinct().ToList() }) 
         .ToList(); 

返回列表。