Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用LINQ从varchar列查询日期范围_C#_Sql Server_Linq_Entity Framework_Date - Fatal编程技术网

C# 如何使用LINQ从varchar列查询日期范围

C# 如何使用LINQ从varchar列查询日期范围,c#,sql-server,linq,entity-framework,date,C#,Sql Server,Linq,Entity Framework,Date,我继承了一个大型SQL Server数据库,它有一个特定的表,该表有一个特定的日期列,该列是yyyyMMdd日期字符串格式的varchar(8)数据类型。我无法理解为什么它不是datetime数据类型或类似的东西。(可能是为了节省空间?早就将遗留数据库移植到SQL Server了?) 为了避免对date Want be字段过于紧张,使用实体框架(DBContext w/LINQ)从该列中使用单个日期获取行非常简单,如下所示: var rows = cxt.TableOfRandomDateCol

我继承了一个大型SQL Server数据库,它有一个特定的表,该表有一个特定的日期列,该列是yyyyMMdd日期字符串格式的varchar(8)数据类型。我无法理解为什么它不是datetime数据类型或类似的东西。(可能是为了节省空间?早就将遗留数据库移植到SQL Server了?)

为了避免对date Want be字段过于紧张,使用实体框架(DBContext w/LINQ)从该列中使用单个日期获取行非常简单,如下所示:

var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date == myDateStr).ToList();

这很容易。但是,如果我想从本专栏中获取一系列日期,该怎么办?做这样的事情最好的方法是什么?

yyyyMMdd格式的日期按字母顺序和数字顺序排列正确,因此您可以像对任何其他字符串列一样使用范围选择器

试试这个:

var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date >= myStrDateStr && x.Date <= myStpDateStr).ToList();

var rows=cxt.TableOfRandomDateColumn.Where(x=>x.Date>=myStrDateStr&&x.DateyyyyMMdd格式的日期按字母顺序和数字顺序排列正确,因此您可以像对任何其他字符串列一样使用范围选择器

试试这个:

var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date >= myStrDateStr && x.Date <= myStpDateStr).ToList();

var rows=cxt.TableOfRandomDateColumn.Where(x=>x.Date>=myStrDateStr&&x.Date如果日期的格式是您所说的格式(例如20121025),则它们将被视为已正确排序,并且以下操作应有效:

var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date >= startDate && x.Date <= endDate).ToList();

var rows=cxt.TableOfRandomDateColumn.Where(x=>x.Date>=startDate&&x.Date如果日期的格式与您所说的格式相同(例如20121025),则它们将被视为已正确排序,并且以下操作应有效:

var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date >= startDate && x.Date <= endDate).ToList();

var rows=cxt.TableOfRandomDateColumn.Where(x=>x.Date>=startDate&&x.Date使用自定义格式的ParseExact日期时间方法。然后可以将其与表达式中的日期时间进行比较。

使用自定义格式的ParseExact日期时间方法。然后可以将其与表达式中的日期时间进行比较