C# 获取最新记录

C# 获取最新记录,c#,.net,xml,sorting,C#,.net,Xml,Sorting,我有一个Xml文件中的记录列表,其中每个记录都是它的创建日期。你能告诉我一个获取最新两个记录的有效方法吗 Xml文件可以按照以下方式进行设置: <Records> <Record> <RecordID>1<RecordID> <CreationDate>Apr 01, 2011 10:15 <CreationDate> <Record> <Record&g

我有一个Xml文件中的记录列表,其中每个记录都是它的创建日期。你能告诉我一个获取最新两个记录的有效方法吗

Xml文件可以按照以下方式进行设置:

<Records>
    <Record>
        <RecordID>1<RecordID>
        <CreationDate>Apr 01, 2011 10:15 <CreationDate>
   <Record>
   <Record>
        <RecordID>2<RecordID>
        <CreationDate>Jan 12, 2011 10:15<CreationDate>
   <Record>
   <Record>
       <RecordID>3<RecordID>
       <CreationDate>Feb 12, 2011 09:00<CreationDate>
   <Record>
         .
         .
         .
         .
   many such records...
<Records>

1.
2011年04月01日10:15
2.
2011年01月12日10:15
3.
2011年2月12日09:00
.
.
.
.
许多这样的记录。。。
将把所有这些xml放入一个列表中,但是您能告诉我一种从列表中提取最近两条记录的有效方法吗

List<Records> recordList = parseXml(); // populate your list
recordList.Sort(new Comparison<Record>(Record.Comparison)); // sort in creation date ascending order
recordList.Revers(); // reverse the elements in the list

Record[] the2latest = new Record[2]{recordList[0], recordList[1]};

public partial class Record
{
   public static int Comparison(Record r1, Record r2)
    {
        return DateTime.Compare(r1.creationDate, r2.creationDate);
    }
}

谢谢。

您需要将创建日期存储为DateTime对象,而不是字符串。在记录类中实现比较创建日期的比较方法。然后,如果您将记录存储在列表中,您应该能够对其进行排序。在下面的示例中,最新的记录将位于末尾,因此,如果需要,只需将列表反转即可

List<Records> recordList = parseXml(); // populate your list
recordList.Sort(new Comparison<Record>(Record.Comparison)); // sort in creation date ascending order
recordList.Revers(); // reverse the elements in the list

Record[] the2latest = new Record[2]{recordList[0], recordList[1]};

public partial class Record
{
   public static int Comparison(Record r1, Record r2)
    {
        return DateTime.Compare(r1.creationDate, r2.creationDate);
    }
}
List recordList=parseXml();//填充您的列表
recordList.Sort(新比较(Record.Comparison));//按创建日期升序排序
recordList.reverse();//反转列表中的元素
Record[]the2latest=新记录[2]{recordList[0],recordList[1]};
公开部分班级记录
{
公共静态整数比较(记录r1、记录r2)
{
返回日期时间。比较(r1.creationDate,r2.creationDate);
}
}

也许您应该更精确一点,解释一下您使用的语言以及将xml转换为的数据类型。您好,Antoine,我正在使用C#.net并使用visual studio的create schema创建模式文件,使用xsd.exe从xml生成实体。公共部分类记录{private RecordsRecord[]recordField;//[System.Xml.Serialization.xmlementattribute(“记录”)]public RecordsRecord[]Record{get{return this.recordField;}set{this.recordField=value;}}}和公共部分类记录记录{private byte recordIDField;private string creationDateField;Sorry函数在上述注释中不可读,因此再次添加公共部分类记录{private Records记录[]记录字段;公共记录记录记录[]记录{get{返回this.recordField;}设置{this.recordField=value;}}}}和一个以上:公共部分类记录记录{private byte recordIDField;private string creationDateField;公共字节RecordID{get{返回this.recordIDField;}set{this.recordIDField=value;}}公共字符串CreationDate{get{返回this.creationDateField;}set{this.creationDateField=value;}}}