我有一些DateTime值。如何从值中选择最低日期以及哪个数组包含该值。
DateTime file1date = DateTime.ParseExact(fileListfordiff[0].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
DateTime file2date = DateTime.ParseExact(fileListfordiff[1].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
DateTime file3date = DateTime.ParseExact(fileListfordiff[2].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
DateTime file4date = DateTime.ParseExact(fileListfordiff[3].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
DateTime file5date = DateTime.ParseExact(fileListfordiff[4].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
DateTime file6date = DateTime.ParseExact(fileListfordiff[5].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
你可以做点什么
List<DateTime> fileDate = new List<DateTime>();
for(int i=0;i<=5;i++)
{
fileDate.Add(DateTime.ParseExact(fileListfordiff[i].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture));
}
DateTime minVal = fileDate.Min();
int minIndex = fileDate.IndexOf(minVal);
我建议您也使用数组作为文件日期。这也使您可以在填充数组时获得最低值:
var filesDate = new DateTime[fileListfordiff.Length];
var lowestDate = DateTime.MaxValue;
var lowestDateIndex = -1;
for(int i=0; i < fileListfordiff.Length; i++)
{
filesDate[i] = DateTime.ParseExact(fileListfordiff[i].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
if(filesDate[i] < lowestDate)
{
lowestDate = filesDate[i];
lowestDateIndex = i;
}
}
如果您愿意使用MoreLINQ
,请考虑以下方法:
var fileDate = new List<DateTime>();
for (int i = 0; i <= 5; i++)
{
fileDate.Add(DateTime.ParseExact(fileListfordiff[i].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture));
}
var arrayIndex = fileDate
.Select((value, index) => new {index, value})
.MinBy(z => z.value).index;
Select
调用允许您同时获取值和索引,而MinBy
允许您获得具有最低值的条目。
首先创建一个DateTime
s数组。将值保存到数组然后您可以使用LINQ获取最低日期。
DateTime[] array = new DateTime[6];
for (int i = 0; i < 6; i++)
{
array[i] = DateTime.ParseExact(fileListfordiff[i].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture);
}
var minDate = array.Min();
或者考虑一个您不需要保存值的情况,只需找到最低的日期。
DateTime minDate = DateTime.MaxValue;
for (int i = 0; i < 6; i++)
{
var date = DateTime.ParseExact(fileListfordiff[i].Substring(22, 8), "yyyyMMdd", CultureInfo.InvariantCulture); ;
if (date < minDate) minDate = date;
}