代码之家  ›  专栏  ›  技术社区  ›  V.Prasad

将List double数组转换为List double

  •  0
  • V.Prasad  · 技术社区  · 6 年前

    下面是我的json数据格式:

           [{
                coordinates: [-74, 40.7],
                values: [22.4, 23.2, 21.5, 20.6,12.3],
            },
            {
                coordinates: [-77, 38.90],
                values: [13.4, 18.2, 24.5, 10.6, 16.3],
            },
            {
                coordinates: [-87, 41.88],
                values: [39.3, 28.8, 10.4, 20.0, 0],
            }]

    public class MapDataList
    {
        public List<double> coordinates { get; set; }
        public List<double> values { get; set; }
    }
    

    我必须为坐标和值属性设置值,如下所示:

    值:[22.4、23.2、21.5、20.6、12.3],

    所以这个值可以用在地图上。

    我创建了一个方法,并尝试了以下内容:

    public List<MapDataList> CreateMapData()
    {
        List<MapDataList> lstMapData = new List<MapDataList>();
        MapDataList mdl = new MapDataList();
        List<double[]> lb1=new List<double[]>();
        double[] coordinateItem1 = {-74, 40.7};
        lb1.Add(coordinateItem1);
        return lstMapData;
    }
    

    但这里的问题是我必须将lb1对象数据设置为lstMapData对象。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Jon Koeter    6 年前

    我正在更新这个答案,但你应该知道:你想做什么还不清楚。

    我做了一把新小提琴。它的作用是:

    1. MapDataList
    2. 为坐标创建一个双精度IEnumerable,为值创建一个双精度IEnumerable。

    我做了最后一件事,因为你的问题的标题似乎表明你需要一个双倍数组的列表,而有一个双倍数组的列表。

    代码:

    public class Program
    {
        public static void Main()
        {
            var json = "[{ coordinates: [-74, 40.7], values: [22.4, 23.2, 21.5, 20.6,12.3], }, { coordinates: [-77, 38.90], values: [13.4, 18.2, 24.5, 10.6, 16.3], }, { coordinates: [-87, 41.88], values: [39.3, 28.8, 10.4, 20.0, 0], }]";
    
            var mapDataLists = JsonConvert.DeserializeObject<List<MapDataList>>(json);
    
            var coordinates = mapDataLists.SelectMany(d => d.coordinates);
            var values = mapDataLists.SelectMany(d => d.values);
    
            Console.WriteLine("Coordinates");
            foreach(var d in coordinates){
                Console.WriteLine(d);
            }
    
            Console.WriteLine("Values");
            foreach(var d in coordinates){
                Console.WriteLine(d);
            }
        }
    }
    
    public class MapDataList
    {
        public List<double> coordinates { get; set; }
        public List<double> values { get; set; }
    }
    

    请看这把小提琴,自己试试: https://dotnetfiddle.net/C48r6T

        2
  •  0
  •   aloisdg    6 年前

    source

    • 使用列表对象初始值设定项将mdl包装到新列表中

    .ToList() 方法来自 System.Linq;

    public static List<MapDataList> CreateMapData(double[] coordinates, double[] values )
    {
        MapDataList mdl = new MapDataList
        {
            Coordinates = coordinates.ToList(),
            Values = values.ToList()
        };
        return new List<MapDataList> { mdl };
    }
    

    Try it Online!

    public static List<MapDataList> CreateMapData(double[] coordinates, double[] values )
    {
        return new List<MapDataList> { new MapDataList
        {
            Coordinates = coordinates.ToList(),
            Values = values.ToList()
        }};
    }