public class myClass { public string name { get; set; } public string AdditionalData { get; set; } public System.DateTime ActivityTime { get; set; } }
我有一个上面的类列表,所有按活动时间排序说’行为’.
我希望将我的数据转换为以下类的列表..
public class newClass { public string name { get; set; } public string AdditionalData { get; set; } public System.DateTime StartTime { get; set; } public System.DateTime EndTime { get; set; } }
这里的StartTime与prev class的ActivityTime具有相同的值,所以我没有问题.
但是EndTime应该具有下一个列表对象的ActivityTime值,这个我无法弄清楚如何获取..
最后一个列表对象的EndTime可以与starttime相同
所以我的代码是……
List<newClass> items = new List<newClass>();foreach (var item in acts){ newClass si = new newClass { name=item.name,AdditionalData=item.AdditionalData,StartTime = item.ActivityTime,EndTime = //what do I do here?????? }; items.Add(si);}
任何帮助都是真诚的感谢
解决方法 我有一个比for循环更优雅的解决方案:List<newClass> output = acts.Select((a,index) => new newClass() { name = a.name,AdditionalData = a.AdditionalData,StartTime = a.ActivityTime,EndTime = (index + 1 < acts.Count) ? acts[index + 1].ActivityTime : default(DateTime) }).ToList();
或者您可以使用for循环而不是foreach:
List<newClass> items = new List<newClass>();// assuming length > 0int length = (acts.Length % 2 == 0) ? acts.Length : acts.Length - 1;for (int i = 0; i < acts.Length; i++){ newClass si = new newClass { name=acts[i].name,AdditionalData=acts[i].AdditionalData,StartTime = acts[i].ActivityTime,EndTime = acts[i+1].ActivityTime }; items.Add(si); }if (length < acts.Length) // handle the last element as you wish总结
以上是内存溢出为你收集整理的c# – 迭代行时获取下一行的值全部内容,希望文章能够帮你解决c# – 迭代行时获取下一行的值所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)