2011-04-13 76 views
4

我發現自己總是需要在通過電線發送它們之前將對象變薄。如何使用Linq將對象投影到列表中?

背景:

Position是一個沉重的競爭者,這是由LINQ生成基於SQL的把我的表。它存儲數據的母點。

SPosition是一個輕量級的對象,它存儲只有我的緯度和longitide。

代碼:

List<SPosition> spositions = new List<SPosition>(); 
foreach (var position in positions) // positions = List<Position> 
{ 
    SPosition spos = new SPosition { latitude = position.Latitude, longitude = position.Longitude }; 
    spositions.Add(spos); 
} 

return spositions.SerializeToJson<List<SPosition>>(); 

我如何使用LINQ一些魔法清理這個了一下?

回答

12
var spositions = positions.Select(
        position => new SPosition 
         { 
          latitude = position.Latitude, 
          longitude = position.Longitude 
         }).ToList(); 
+0

追加「.ToList()」到最後返回一個List 而不是IEnumerable 2011-04-13 20:31:08

6
return positions 
    .Select(x => new SPosition 
    { 
     latitude = x.Latitude, 
     longitude = x.Longitude 
    }) 
    .ToList() 
    .SerializeToJson<List<SPosition>>(); 
0
positions.ForEach((p) => {spositions.Add({new SPosition { latitude = p.Latitude, longitude = p.Longitude };  }); 
0
return (from p in positions 
     select new SPosition 
     { 
      latitude = p.Latitude, 
      longitude = p.Longitude 
     }).ToList().SerializeToJson(); 
0

首先想到的:

return positions.Select(p => new SPosition 
     { 
      latitude = p.Latitude, 
      longitude = p.Longitude 
     }).ToList().SerializeToJson<List<SPosition>>(); 

還沒有機會測試的代碼,但我認爲它會工作。