2017-04-11 93 views
0

的位置,我有一个产生以下结果LINQ查询:LINQ查询列表,增加了结果

var result = from x in model.SITEs 
       where x.SiteId == homeSite 
       select new { x.SiteId, 
          x.SiteAlloc1, 
          x.SiteAlloc2, 
          x.SiteAlloc3, 
          x.SiteAlloc4 }); 



SiteId SiteAlloc1 SiteAlloc2 SiteAlloc3 SiteAlloc4 
====================================================== 
1   5   3   2   4 

但我需要的是更多的东西像这样,在RankSiteId中的地位结果。

SiteId  Rank 
================== 
1   1 
2   4 
3   3 
4   5 
5   2 

回答

1
var result = from x in model.SITEs 
      where x.SiteId == homeSite 
      select new { x.SiteId, 
         x.SiteAlloc1, 
         x.SiteAlloc2, 
         x.SiteAlloc3, 
         x.SiteAlloc4 }). 
      Select((t,u) => new { 
         SiteId = t.SiteId, 
         SiteAlloc1 = t.SiteAlloc1, 
         SiteAlloc2 = t.SiteAlloc2, 
         SiteAlloc3 = t.SiteAlloc3, 
         SiteAlloc4 = t.SiteAlloc4, 
         Rank = u + 1)); 

其中U是指数(从0开始,这就是为什么我加1),或者在你的情况下,排名和T为选择目标

+0

谢谢你的快速反应。但它不喜欢'Select((t,u)=> new {SiteId = SiteId,Rank = u + 1)');' – PixelPaul

+0

'对不起,应该是t.SiteId,i更新了答案 –

+0

这只适用于第一列“SiteId”,但不适用于其他列(“SiteAlloc1,SiteAlloc2,SiteAlloc3,SiteAlloc4”) – PixelPaul