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

时间:2014-10-11 08:04:34

标签: c# devexpress aspxgridview generic-list

我有一个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 | SomeProperty2 | ...... | SomePropertyN | CallStartTime | CallEndTime

实际上,我在2列中使用Date属性,在第一列(Date)中,我只使用date部分,而在另一列(CallStartTime)中,我使用仅time部分。

不幸的是,当我只是要求它在2列中显示我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();
}

1 个答案:

答案 0 :(得分:0)

使用@Yuval Itzchakov的评论解决了我的问题。

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

所以,我按原样保留了代码,并改进了导致瓶颈的this.SomePropertyX = log.SomePropertyX代码。