2011-05-24 45 views
0

MVC ViewPage包含用户(intranet.Model.User)。每个用户可以在模型中以intranet.model.User.UserRates表示一个或多个工资率。内联lambda - 最近日期的获取率

我需要能够显示每个用户使用内联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]

回答

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> 
1

我无法弄清楚你的数据是什么样子,但你不能做这样的事情吗?

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

你好,谢谢,我有我的迭代之一,但面临一定的用户没有任何用户数据率,所以代码抛出一个问题“序列不包含元素”错误。我可以确保在数据库中至少每个用户都有一个默认的0.00用户速率,但是我想我可以在lambda中缓解这个问题。 – Klaptrap 2011-05-24 09:19:21

+0

处理.FirstOrDefault()而不是第一个。在某些情况下,这仍然给我一个空对象,但我目前正在捕获 – Klaptrap 2011-05-24 09:27:00

+0

<%var latestRate = item.UserRates .OrderByDescending(hr => hr.effective) .FirstOrDefault ()??新的intranet.Models.UserRate(); %> <%= Html.Encode(latestRate.rate)%> – Klaptrap 2011-05-24 09:49:48