You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# 将源列表数据复制到自定义类列表仅保留最后一条如何解决

问题原因

你代码的问题出在foreach循环内部,每次循环都执行了ObjCal = new List<CalenderColumns>(),这会每次清空之前已经存入的元素,重新创建只包含当前循环条目的新列表,循环结束后自然只剩下最后一次循环创建的、仅包含最后一条数据的列表。

修复方案

方案1:修改foreach逻辑,调用列表Add方法添加元素

var monthlySchedule = db.StudioSchedules.ToList();
List<CalenderColumns> ObjCal = new List<CalenderColumns>();
foreach (var item in monthlySchedule)
{
    // 不要重新创建列表,直接创建对象添加到已有列表中
    ObjCal.Add(new CalenderColumns 
    {
        id = item.ID, name = item.Description,
        startdate = item.Date.ToString(), enddate=item.Date.ToString(),
        starttime =item.StartTime, endtime=item.EndTime,
        color ="#99CCCC", url="" 
    });
}

Console.WriteLine(ObjCal);

方案2:使用LINQ直接映射生成列表(写法更简洁)

先引入对应命名空间:using System.Linq;

var monthlySchedule = db.StudioSchedules.ToList();
List<CalenderColumns> ObjCal = monthlySchedule.Select(item => new CalenderColumns 
{
    id = item.ID, 
    name = item.Description,
    startdate = item.Date.ToString(), 
    enddate = item.Date.ToString(),
    starttime = item.StartTime, 
    endtime = item.EndTime,
    color = "#99CCCC", 
    url = "" 
}).ToList();

Console.WriteLine(ObjCal);

内容的提问来源于stack exchange,提问作者taji01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 21:27:04