当搜索一行时,计数返回为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>();
 }
}

如果我遗漏了什么或需要提供更多的信息,请让我知道,我会尽快更新。

当搜索一行时,计数返回为0

一定是比较出错了。我通常使用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列?