从对象数组创建List <objects>列表

时间:2016-05-31 21:01:57

标签: c# .net list select

给出一个数组:

public class MyObject
{
    public int ID { get; set; }
    public DateTime timeStamp { get; set; }
    public int value { get; set; }
}

如何使用List<Objects>List<List<Object>>或任何其他方法创建List<Objects>.Select<>)或.Orderby<>数组的列表, ID字段?

我的初始数组将具有多个具有相同时间戳的ID。我想分别处理每个ID。

4 个答案:

答案 0 :(得分:2)

我假设你想按ID 分组对象,在这种情况下你可以这样做:

var groups = objects.Groupby(o => o.ID)
                    .Select(g => g.ToList());

这将为您提供可以迭代的List<Object>“集合”。如果确实想要列表或列表数组,只需将ToList()ToArray()添加到最终查询中。

答案 1 :(得分:1)

问题不是很具体

List<Object> ListObect = ArrayOject.OrderBy(x => x.ID).ToList();

答案 2 :(得分:1)

您可以使用Enumerable.GroupBy方法按照具有相同ID的项目对列表进行分组:

var groupedByID = originalList.GroupBy(x => x.ID);

从技术上讲,这会返回IEnumerable<IGrouping<int, Object>>,但IGrouping可以像列表或数组一样进行迭代。如果您需要索引访问权限,或者需要动态添加/删除项目,通常只需要List

答案 3 :(得分:-1)

看看这是否有帮助

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string[] input = {
                "123, 1/1/2016, 456\n",
                "456, 1/2/2016, 456\n",
                "789, 1/3/2016, 456"
            };
            List<MyObject> objects = input.Select(x => x.Split(new char[] {','}, StringSplitOptions.RemoveEmptyEntries)).Select(y => new MyObject() {ID = int.Parse(y[0]), timeStamp = DateTime.Parse(y[1]), value = int.Parse(y[2])}).ToList();

        }
    }
    public class MyObject
    {
        public int ID { get; set; }
        public DateTime timeStamp { get; set; }
        public int value { get; set; }
    }
}