【问题标题】:Add items with same date to sub list of item main list将具有相同日期的项目添加到项目主列表的子列表中
【发布时间】:2013-09-06 06:36:54
【问题描述】:

我在主列表中有项目列表,主列表有子列表,现在我需要主列表中具有相同日期的所有项目添加子列表的项目。有人知道有什么推荐吗?这是示例:https://dl.dropboxusercontent.com/u/40039421/Sn%C3%ADmka.PNG

public class calendarData
{
    public string name { get; set; }
    public string shortName { get; set; }
    public DateTime HOURstartDT { get; set; }
}

 public static List<List<calendarData>> getCalList()
    {

        List<calendarData> lessons = new List<calendarData>();

        for (int i = 0; i < test.getResp().GetStudies(0).LessonsList.Count; i++)
        {
            for (int j = 0; j < test.getResp().GetStudies(0).GetLessons(i).HoursCount; j++)
            {
            lessons.Add(new calendarData
            {
                name = test.getResp().GetStudies(0).GetLessons(i).Name,
                shortName = test.getResp().GetStudies(0).GetLessons(i).Shortname,
                HOURstartDT = new DateTime(test.getResp().GetStudies(0).GetLessons(i).GetHours(j).StartTime.Year, test.getResp().GetStudies(0).GetLessons(i).GetHours(j).StartTime.Month, test.getResp().GetStudies(0).GetLessons(i).GetHours(j).StartTime.Day, test.getResp().GetStudies(0).GetLessons(i).GetHours(j).StartTime.Hour, test.getResp().GetStudies(0).GetLessons(i).GetHours(j).StartTime.Minute, 0),

            });

            }  
        }

        List<List<calendarData>> listOfList=new List<List<calendarData>>();

        foreach (calendarData subList in lessons)
        {
            listOfList.Add(new List<calendarData> {subList});
        }
        return listOfList;
    }

现在我得到结果:10 个项目的列表,每个项目都有一个项目的列表。我如何比较 HOURstartDT 和第一个列表中具有相同日期的所有项目,我需要添加到主列表的子列表中。

示例:主列表:项目 1:name=“Jon”,Date=14.6.2013 项目 2:name="Steve",Date=15.6.2013,项目 3:name="Michael",Date=14.6。 2013

我需要将具有相同日期(14.6.2013)的项目添加到子列表中,例如项目并从主列表中删除这些项目。

【问题讨论】:

    标签: c# list date windows-8 windows-store-apps


    【解决方案1】:

    我正在为您提供静态数据的解决方案。你可以使用它。

    public List<List<calendarData>> getCalList()
    {
        List<List<calendarData>> StaticData = new List<List<calendarData>> 
        {
            new List<calendarData> 
            {
                new calendarData
                {
                    name = "Jon Jon",
                    shortName = "Jon",
                    HOURstartDT = DateTime.Now.Date.AddDays(-1)
                }
            },
    
            new List<calendarData> 
            {
                new calendarData
                {
                    name = "Steve Steve",
                    shortName = "Steve",
                    HOURstartDT = DateTime.Now.Date
                }
            },
    
            new List<calendarData> 
            {
                new calendarData
                {
                    name = "Michael Michael",
                    shortName = "Michael",
                    HOURstartDT = DateTime.Now.Date
                }
            }
        };
    
        //return StaticData.GroupBy(x => x.FirstOrDefault().HOURstartDT).Select(x => x.ToList()).ToList();
        return StaticData.SelectMany(x => x).ToList().GroupBy(x => x.HOURstartDT).Select(x => x.ToList()).ToList();
    }
    

    【讨论】:

      【解决方案2】:

      你可以尝试这样的事情,使用 linq

      var mySubList = lessons.Where(l => l.HOURstartDT == AddYourDataHere);
      mySubList.ForEach(item => 
                 {
                     lessons.remove(item);
                 });
      

      不确定我是否理解完整的问题,但这将是一个开始

      【讨论】:

      • Windows 商店中不存在 ForEach。(
      猜你喜欢
      • 2023-01-28
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多