将一个通用列表复制到另一个具有不同数据类型的列表花费的时间太长(C#)

本文关键字:列表 数据类型 时间 另一个 一个 复制 | 更新日期: 2023-09-27 18:26:16

我有一个List<CallLog>,其中CallLog具有以下属性:

public string SomeProperty1 { get; set; }
public string SomeProperty2 { get; set; }
public string SomePropertyN { get; set; }
public DateTime Date { get; set; }
public DateTime CallEndTime { get; set; }    

我需要用这个列表填充(devexpress)网格数据源。网格有以下列:

日期|SomeProperty1|SomeProperty 2|…|SomePropertyN|CallStartTime|CallEndTime

事实上,我在两列中使用Date属性,在第一列(Date)中,我只使用date部分,在另一列(CallStartTime)中,我们只使用time部分。

不幸的是,当我简单地要求gridxview在两列中显示我的Date属性的不同格式时,它无法执行正确的分组。因此,我决定创建一个自定义类,将原始列表复制到一个新列表(List<CustomizedCallLog>)中,并将新列表作为网格数据源传递。以下是我如何做到这一点。但这需要很长时间。有什么快速的方法可以复制这份清单吗?

我的自定义呼叫日志类:

Public Class CustomizedCalLog
{
    public DateTime Date { get; set; }
    public string SomeProperty1 { get; set; }
    public string SomeProperty2 { get; set; }
    public string SomePropertyN { get; set; }
    public string CallStartTime { get; set; }
    public string CallEndTime { get; set; }
    public CustomizedCallLog(CallLog log)
    {
        this.Date = log.Date;
        this.SomeProperty1 = log.SomeProperty1 ;
        this.SomeProperty2 = log.SomeProperty2 ;
        this.SomePropertyN = log.SomePropertyN ;
        this.CallStartTime = log.Date.ToString("H:mm");
        this.CallEndTime = log.CallEndTime.ToString("H:mm");           
    }        
}

设置网格:

private void SetGrid()
{
    var logs = someBusiness.GetLogs();
    List<CustomizedCallLog> dataSource = new List<CustomizedCallLog>();
    foreach (var log in logs)
    {
        dataSource.Add(new CustomizedCallLog(log));
    }
    grid.ForceDataRowType(typeof(CustomizedCallLog));
    grid.DataSource = dataSource;
    grid.DataBind();
}

将一个通用列表复制到另一个具有不同数据类型的列表花费的时间太长(C#)

我的问题通过@Yuval Itzchakov的评论得到了解决。

我无法将新属性添加到现有类中,因为现有类是自动生成的(使用一些.tt文件)。

因此,我保留了代码的原样,并改进了造成瓶颈的this.SomePropertyX = log.SomePropertyX位代码。