内联lambda - 获取最新日期的费率

时间:2011-05-24 08:46:53

标签: c#-4.0 date lambda group-by

MVC ViewPage包含用户(intranet.Model.User)。每个用户可以在模型中将一个或多个工资率表示为intranet.model.User.UserRates。

我需要能够使用内联Lambda表达式显示每个用户的最新付费率,但我没有成功(显示错误消息而不是付费率)。

我最近的化身是:

     
        <% var latestRate = item.UserRates
                               .GroupBy(hr=>hr.rate)
                               .Select(g=>g.Single(
                                  d=>d.effective == g.Max(m=>m.effective))
                                ); %>

<%= Html.Encode(latestRate) %> </td>

列中的错误消息是:

  

System.Linq.Enumerable + WhereSelectEnumerableIterator 2[System.Linq.IGrouping 2 [System.Decimal,intranet.Models.UserRate],intranet.Models.UserRate]

2 个答案:

答案 0 :(得分:1)

我无法确切地知道你的数据是什么样的,但是你不能做这样的事情吗?

var latestRate = item.UserRates
                     .OrderByDescending(x => x.effective)
                     .First();

答案 1 :(得分:0)

最后的迭代(现在):

  <% var userRate = item.UserRates
                        .OrderByDescending(hr=>hr.effective)
                        .FirstOrDefault() ?? new intranet.Models.UserRate(); %>

  <td class="hrlyRate">                                         
      <%= Html.Encode(string.Format("{0:0.000}", userRate.rate))%>
  </td>