多数组中按日期排序的问题?

时间:2010-03-23 23:17:41

标签: c# .net

我想根据Array B中的值对数组A进行排序

实际上在数组A中我有像

这样的主题
keyboard
Laptop
Desktop
mouse

并且在数组B中,我有与数组A中的每个值相关联的日期 我怎么能实现这个....我正在考虑使用多数组,但我不确定是否有任何默认的排序多数组的方法...或者是否有任何其他方法来实现这一目标?

4 个答案:

答案 0 :(得分:3)

使用:

Array.Sort (A, B, comparer); // comparer can be null here to use the default

其中A是DateTime [],B是字符串[],其中A [0]是对应于字符串B [0]的日期,依此类推。 (MSDN docs here

答案 1 :(得分:0)

创建一个具有两个属性的对象:主题的字符串和日期的日期时间。将这些对象放在数组或集合中,然后您可以对日期进行排序,并根据需要选择投影主题数组。

答案 2 :(得分:0)

如果你完全管理这个,你可能想把它们放在一个单独的类中:

class HardwareElement
{
    public HardwareElement(string topic, DateTime date)
    {
       this.Topic = topic;
       this.Date = date;
    }
    public string Topic { get; set; }
    public DateTime Date { get; set; }
}

然后,给定上面的数组,您可以轻松地对它们进行排序:

HardwareElement[] theArray = PopulateMyArray();

Array.Sort(theArray, (l, r) => l.Date.CompareTo(r.Date));

答案 3 :(得分:0)

除非您有特殊原因,否则您可能不应将两个相关的数据存储在完全独立的数组中。

您可以尝试以下内容:

public enum Device
{
    Laptop,
    Mouse,
    Keyboard 
}

public struct DeviceEvent
{
    public DeviceEvent(Device device, DateTime timestamp) : this()
    {
        Device = device;
        TimeStamp = timestamp;
    }
    public Device Device { get; set; }
    public DateTime TimeStamp { get; set; }
}


List<DeviceEvent> deviceEvents = new List<DeviceEvent>();
deviceEvents.Add(new DeviceEvent(Device.Keyboard, DateTime.Now);
deviceEvents.Add(new DeviceEvent(Device.Mouse, DateTime.Today);
... etc

IEnumerable<DeviceEvent> orderedDeviceEvents = deviceEvents.OrderBy(e = > e.TimeStamp);