如何对齐两个数组索引?

时间:2016-06-20 15:16:22

标签: c#

我有一个对象,其中一个属性类型为DateTime [],另一个属性为decimal [],这些数组的长度相同,每个索引值对应其他数组索引值。

我想基于DateTime []的过滤得到小数[],最好的方法是什么?

感谢!!!

2 个答案:

答案 0 :(得分:5)

您可能正在寻找Zip

  DateTime[] dates = ...
  decimal[] decimals = ...

  var result = dates
    .Zip(decimals, (date, dec) => new {
           date = date,
           value = dec
         })
    .Where(item => ...) // The required filter here, e.g. item.date.Year == 2016
    .Select(item => item.value);

修改:如果需要数组index(请参阅下面的评论),可以将其添加到Where

    ...
    .Where((item, index) => ...) // Put filter, e.g. item.date.Year == 2016 || index > 3
    ...

答案 1 :(得分:0)

我更愿意使用DateTime[] dateArray = new DateTime[10]; decimal[] decArray = new decimal[10]; DateTime someDate = new DateTime(1999, 10, 23); decimal item_from_array = decArray[dateArray.ToList().IndexOf(someDate)]; ,但如果你真的想坚持使用数组:

Find

如果您需要过滤器,可以使用decimal item_from_array_filter = decArray[dateArray.ToList().IndexOf(dateArray.ToList().Find(x=>x.Year == 1999))]; 方法:

List<DateTime> dateList = new List<DateTime>();
decimal item = decArray[dateList.IndexOf(someDate)];

如果您使用列表,则为第2版。

{{1}}