我有一个对象,其中一个属性类型为DateTime [],另一个属性为decimal [],这些数组的长度相同,每个索引值对应其他数组索引值。
我想基于DateTime []的过滤得到小数[],最好的方法是什么?
感谢!!!
答案 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}}