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
相关产品推荐
相关产品推荐

