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

将一个通用列表复制到另一个具有不同数据类型的列表需要的时间太长(C#),c#,devexpress,aspxgridview,generic-list,C#,Devexpress,Aspxgridview,Generic List,我有一个列表,其中调用日志具有以下属性: 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)

我有一个
列表
,其中
调用日志
具有以下属性:

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)网格数据源。网格具有以下列:

日期|某些财产1 |某些财产2 |……|SomePropertyN | CallStartTime | CallEndTime

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

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

我的自定义呼叫日志类:

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();
}
private void SetGrid()
{
var logs=someBusiness.GetLogs();
列表数据源=新列表();
foreach(var登录日志)
{
Add(新的定制调用日志(log));
}
grid.ForceDataRowType(typeof(CustomizedCallLog));
grid.DataSource=数据源;
grid.DataBind();
}

我的问题通过@Yuval Itzhakov的评论得到解决

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


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

下面是我如何做到这一点的。但这需要很长时间。您是否对代码进行了基准测试?你确定瓶颈在于列表的复制吗?你是对的,瓶颈在于
this.SomePropertyX=log.SomePropertyX谢谢!我认为您可以尝试这种方法,不要创建新类,而是将这两个新属性添加到现有类中。在这两个属性的getter中,您只需返回格式化字符串。类似这样的东西..类CallLog{public string sometroperty1{get;set;}public string sometroperty2{get;set;}public string sometropertyn{get;set;}public DateTime DateTime Date{get;set;}public DateTime CallEndTime{get;set;}public string CallStartTime{get{return Date.ToString(“H:mm”);}set;}public string CallEndTime2{get{return CallEndTime.ToString(“H:mm”);}set;}如果您喜欢这个,请让我知道我将添加这个作为答案。这个问题解决了还是您仍然面临这个问题