【问题标题】:Creating a List of List<objects> from an array of objects从对象数组创建 List<objects> 列表
【发布时间】:2016-09-30 01:07:42
【问题描述】:

给定一个数组:

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

如何在 ID 字段中使用.Select&lt;&gt;.Orderby&lt;&gt; 或任何其他方法创建List&lt;Objects&gt; (List&lt;List&lt;Object&gt;&gt;) 列表或List&lt;Objects&gt; 数组?

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

【问题讨论】:

  • 不太清楚你想要实现什么
  • 您是否要根据时间戳对它们进行分组?
  • 您是否要按ID 分组,这样您就有一个列表,其中每个项目都是Object 的列表,它们具有相同的ID
  • 我原以为“在 ID 字段上”会指定我试图分组的内容,但我想我错了。我认为@jeff 比我做得更好。
  • 将您的对象称为对象当然不是一件好事。给它一个更好的名字。

标签: c# .net list select


【解决方案1】:

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

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

这将为您提供List&lt;Object&gt; 的“集合”,您可以对其进行迭代。如果您真的想要列表列表或列表数组,只需将ToList()ToArray() 添加到最终查询中即可。

【讨论】:

    【解决方案2】:

    问题不是很具体

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        看看有没有帮助

        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; }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2014-03-22
          • 2023-02-10
          • 2021-11-05
          • 1970-01-01
          • 1970-01-01
          • 2019-05-16
          • 1970-01-01
          • 1970-01-01
          • 2013-05-28
          相关资源
          最近更新 更多