C# 如何在c中搜索日期并检查它是否存在于datetime数组中#
我有一个C# 如何在c中搜索日期并检查它是否存在于datetime数组中#,c#,C#,我有一个DateTime数组,我想在其中插入某些日期。但在此之前,我想检查数组中是否已经存在日期。我无法在我的代码中使用包含或存在 for (int i = 0; i < TableFinal.Rows.Count; i++) { DateTime[] existingDates; if (dsCSV.Tables[0].Rows.Count > 0) { var previousRatingDate = TableFinal.Rows[i]
DateTime
数组,我想在其中插入某些日期。但在此之前,我想检查数组中是否已经存在日期。我无法在我的代码中使用包含
或存在
for (int i = 0; i < TableFinal.Rows.Count; i++)
{
DateTime[] existingDates;
if (dsCSV.Tables[0].Rows.Count > 0)
{
var previousRatingDate = TableFinal.Rows[i]["RatingDate"];
if (existingDates.Contains(previousRatingDate))
{
//if not then insert previousRatingDate into array
}
}
}
for(int i=0;i0)
{
var previousRatingDate=TableFinal.Rows[i][“RatingDate”];
if(existingDates.Contains(previousRatingDate))
{
//如果不是,则将previousRatingDate插入数组
}
}
}
制作扩展方法
如下:
using System;
using System.Linq;
public static class Extensions
{
public static void Add<T>(this T[] _self, T item)
{
if(Array.IndexOf(_self, item)== -1)
{
Array.Resize(ref _self, _self.Length + 1);
_self[_self.Length - 1] = item;
}
}
}
我希望它能对您有所帮助。因此,在数组中循环,检查每个条目是否与您要查找的日期匹配。如果你找到了,就打破这个循环。到目前为止您尝试了什么?为什么不能使用
包含
或存在
?这是家庭作业吗?请显示您尝试过的内容我不想使用循环,我已经在迭代中,我尝试将if条件应用于我的代码和使用过的数组。Contains和array.Exists,但其中没有一个适用于datetime数组。您可以使用数组的IndexOf
属性,如数组。IndexOf(anyArray,value)
。如果索引大于-1,则表明它包含所述值,即您的案例中的日期。然后请使用包含和存在来显示条件,因为它们是正确的方法,谢谢。我尝试了此操作,但在if(!datesList.Any(item=>item==dateValue))运算符“==”不能应用于“datetime”和“object'@S.J.Lee”类型的操作数时出现错误。您必须将dateValue解析为datetime
。像(DateTime)dateValue
一样,我在这一行上得到这个异常var dateValue=(DateTime)TableFinal.Rows[i][“RatingDate”];例外情况:“指定的强制转换无效”@S.J.Lee数据表中RatingDate
的Type
是什么?@S.J.Lee如下尝试:DateTime.ParseExact(TableFinal.Rows[i][“RatingDate”].ToString(),“yyyy-MM-dd HH:MM:ss,fff”,System.Globalization.CultureInfo.InvariantCulture)代码>
DateTime[] existingDates= new DateTime[] { };
existingDates.Add<DateTime>(DateTime.Now);
var existingDates = new List<string>();
var previousRatingDate = TableFinal.Rows[i]["RatingDate"].ToString();
if (!existingDates.Any(item => item == previousRatingDate))
{
existingDates.Add(previousRatingDate);
}