[英]Linq query doesn't return correct result if values are in different tables
[英]Linq query doesn't return anything even if DateTime values are the same
关于日期,我遇到了一个奇怪的问题。 我正在尝试使用日期从mongodb获取值。 我知道发生了什么事,这就是为什么即使他们有相同的日期也没有得到任何回报的原因。 过程如下:
我正在使用ID从数据库中提取数据,现在获取的记录具有日期。 此日期显示在我的视图中。 这是我的方法。
行动:
public JsonResult GetDateSentList(string id)
{
var data = ApiHelper<List<SomeModel>>.Get("SomeController/SomeAction?id=" + id); //I created a helper for requests
var distinctData = data.Select(a => a.DateOfEvent).Distinct().ToList();
foreach (var item in distinctData)
{
var dateData = new SomeModel();
dateData = data.FirstOrDefault(a => a.DateOfEvent == distinctData[i]);
dateData.DateOfEventString = dateData.DateOfEvent.ToString(@"MM-dd-yyyy hh:mm", new CultureInfo("en-US"));
dateData.DateOfEventExactString = dateData.DateOfEvent.ToString(@"MM-dd-yyyy hh:mm:ss tt", new CultureInfo("en-US"));
}
return Json(listDistinctData);
}
如您所见,这是通过ajax调用访问的,此处的值(日期字符串)是使用js显示的。
这是我现在要获取的值:6/30/2014 7:01:17 AM(这是html值中的字符串)
现在,只要按一下按钮,我就会在操作上传递相同的日期字符串,并且该操作向WebApi执行请求。
在WebApi上,字符串正在转换为dateTime(request.DateSent),此时,我正在尝试使用要获取的记录上的日期来获取与第一部分相同的记录。 。
x= someService.All().FirstOrDefault(c => c.DateOfEvent == request.DateSent);
我检查了想要获取的记录,它的DateTime值为6/30/2014 7:01:17 AM,而我用来获取想要的记录的DateTime的DateTime值为6/30 / 2014 7:01:17 AM。 可悲的是,我一直在获取空值。 这里发生了一些事情,导致它们不相等,但我根本无法追查。 有任何想法吗? 谢谢!
您必须再考虑一下。 午夜1毫秒等于午夜1毫秒吗? 如果是这样,则应计算差异,并查看其是否小于您选择的某个间隔。 如果不是,您应该只比较您感兴趣的字段(年,日,月等)。
您可以构建一个静态的“截断”函数,该函数可以截断除秒或更dt = dt.AddTicks(-dt.Ticks % 10000000);
以外的所有内容: dt = dt.AddTicks(-dt.Ticks % 10000000);
在这里找到: 比较两个日期时间时忽略毫秒
并使用截短的日期进行比较。
警惕时区,但这在这里可能不是问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.