首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用中间方法将c#列表转移到另一个列表

使用中间方法将c#列表转移到另一个列表
EN

Stack Overflow用户
提问于 2011-10-02 20:07:59
回答 2查看 241关注 0票数 2

我不确定标题,但我有这个任务,我遇到了麻烦。

我有一个从WCF服务下载的列表。

即:

代码语言:javascript
复制
 List<Stops_edited_small> StopsList = new List<Stops_edited_small>(e.Result);

该列表有几个项目

两个是:

代码语言:javascript
复制
LatitudeField
LongitudeField

基本上,我需要做的是通过这样做为列表中的每条记录创建一个地理坐标值:

代码语言:javascript
复制
GeoCoordinate(Convert.ToDouble(LatitudeField), Convert.ToDouble(LongitudeField));

然后将每条记录中的地理坐标值添加到一个新列表中,然后我就可以使用它了。

讲得通?我不确定我将如何做这件事。我需要某种foreach循环来对我的原始列表进行地理坐标转换吗?我必须先把它转换成一个类才能这样做吗?

谢谢,欢迎任何帮助或想法。

(编辑:只是补充一下,这是在windows phone上,所以.net 4是可用的)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-02 20:11:00

如果您使用的是.NET 3.5或更高版本,则可以使用LINQ2Objects

代码语言:javascript
复制
var coordinateList = StopsList.Select(stop =>
    new GeoCoordinate(Convert.ToDouble(stop.LatitudeField),
                      Convert.ToDouble(stop.LongitudeField))).ToList();

如果您使用的是较旧的.NET版本,则需要使用显式循环。

代码语言:javascript
复制
var coordinateList = new List<GeoCoordinate>();
foreach(var stop in StopsList)
{
    coordinateList.Add(
        new GeoCoordinate(Convert.ToDouble(stop.LatitudeField),
                          Convert.ToDouble(stop.LongitudeField)));
}

编辑

如果你想把新的GeoCoordinate和停靠点结合起来,你有几个选择。

创建具有匿名类型的列表

代码语言:javascript
复制
var combinedList = StopsList.Select(stop =>
    new {
        s = stop,
        coord = new GeoCoordinate(Convert.ToDouble(stop.LatitudeField),
                      Convert.ToDouble(stop.LongitudeField)),
    }).ToList();

您也可以对您创建的类执行相同的操作,将new {替换为new YourClass {

您也可以通过以上两个列表使用Zip方法

代码语言:javascript
复制
var combinedList = StopsList.Zip(coordinateList, Tuple.Create).ToList();

这将为您提供一个List<Tuple<Stop, GeoCoordinate>>

请注意,在大多数情况下,您可以跳过.ToList(),得到的不是List<T>,而是IEnumerable<T>。在大多数情况下,这与List一样好,但您的程序不必总是将所有内容都复制到列表中。通常效率会更高一些,而且你不需要一直输入.ToList()

票数 5
EN

Stack Overflow用户

发布于 2011-10-02 20:25:20

您可以使用在引入LINQ2.0之前就回到.NET 2.0的ConvertAll方法。

下面是一个示例:

Cast List to List in .NET 2.0

和MSDN文章:

http://msdn.microsoft.com/en-us/library/73fe8cwf.aspx

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7626212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档