如何使用Linq将对象投影到列表中?

时间:2011-04-13 20:27:47

标签: c# linq

我发现自己总是需要在通过电线发送物品之前将其弄薄。

背景

Position是一个重要的竞争者,它是由基于我的表的LINQ to SQL生成的。它存储数据的母亲。

SPosition是一个轻量级对象,只存储 我的纬度和长度。

代码:

 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魔法来清理它?

5 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:6)

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

答案 2 :(得分:0)

positions.ForEach((p) => {spositions.Add({new SPosition { latitude = p.Latitude, longitude = p.Longitude };      }); 

答案 3 :(得分:0)

return (from p in positions
        select new SPosition 
        {
            latitude = p.Latitude,
            longitude = p.Longitude
        }).ToList().SerializeToJson();

答案 4 :(得分:0)

首先想到:

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

没有机会测试代码,但我认为它会起作用。