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

ROF*_*IME 0 c# linq sql-server entity-framework date

我继承了一个大型SQL Server数据库,该数据库有一个特定的日期列,该日期列是yyyyMMdd日期字符串格式的varchar(8)数据类型.为什么它不是datetime数据类型或类似的东西超出我.(也许是为了节省空间?遗留数据库很久以前移植到SQL Server?)

由于在日期想要的字段上过于慌乱,使用实体框架(DBContext w/LINQ)使用此列中的单个日期获取行非常简单,如下所示:

var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date == myDateStr).ToList();
Run Code Online (Sandbox Code Playgroud)

这就像它变得一样简单.但是,如果我想从此专栏中获取一系列日期,该怎么办?做这样的事情最好的方法是什么?

Seb*_*ine 5

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

试试这个:

var rows = cxt.TableOfRandomDateColumn.Where(x => x.Date >= myStrDateStr && x.Date <= myStpDateStr).ToList();
Run Code Online (Sandbox Code Playgroud)