我想根据Array B中的值对数组A进行排序
实际上在数组A中我有像
这样的主题keyboard
Laptop
Desktop
mouse
并且在数组B中,我有与数组A中的每个值相关联的日期 我怎么能实现这个....我正在考虑使用多数组,但我不确定是否有任何默认的排序多数组的方法...或者是否有任何其他方法来实现这一目标?
答案 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);