当搜索一行时,计数返回为0
本文关键字:返回 一行 搜索 | 更新日期: 2023-09-27 18:10:57
我目前正在做以下操作,试图根据日期时间返回数据表中的特定行。我遇到的问题是,当我运行代码,我不断得到0回我的行数,我不知道为什么。这里有一些代码,也许有人可以挑选出来。
var myDay = new AnalysisDay(uniqueDate.Date, null, null, null, null);
var daysList = new List<AnalysisDay>();
foreach(var uniqueDate in uniqueDateList)
{
var myDay = new AnalysisDay(uniqueDate.Date, null, null, null, null);
var curDate = uniqueDate;
//This is the area where the rows come back 0 everytime "Start Date Time"
//occasionally has DBNull values
var curDatesRows = analysisInfo.Tables[0].Select("StartDateTime = #{0}#", curDate.ToShortDateString()));
}
这是贯穿始终的自定义类,
public class AnalysisDay
{
public DateTime? Date { get; set; }
public DateTime? Time { get; set; }
public string Name { get; set; }
public int? CarNumber { get; set; }
public int? RunId { get; set; }
public ObservableCollection<AnalysisDay> Items { get; set; }
public AnalysisDay(DateTime? date, DateTime? time, string strName, int? number, int? runId)
{
Date = date;
Time = time;
Name = strName;
CarNumber = carNum;
RunId = runId;
Items = new ObservableCollection<AnalysisDay>();
}
}
如果我遗漏了什么或需要提供更多的信息,请让我知道,我会尽快更新。
一定是比较出错了。我通常使用LINQ来代替查询:
var curDatesRows
= dt.Rows.Cast<DataRow>()
.Where(x => x.Field<DateTime?>("StartDateTime").HasValue
&& x.Field<DateTime>("StartDateTime").Date == curDate.Date);
我对一些样本数据进行了测试-它将过滤掉具有空值的行。
请注意,如果curDate
有一个时间部分,并且它与表中的内容不完全匹配,那么除非在进行比较时使用.Date
删除时间部分,否则您将无法获得任何行。
看起来您正在传递一个短日期字符串作为针对包含日期时间值(其中包括时间组件)的列的过滤器。我相信startDateTime
列中没有日期将与过滤器匹配,或者只有时间组件为零的值(这是不可能的,除非您在持续之前修改时间。
如果没有额外的信息,很难判断。你能给我们看一下表格中的一些样本数据吗?具体来说,是startDateTime
列?