C# 使用LINQ到SQL查询日期
我在发布日期列中有这些记录,它们是字符串。我想在LINQ to SQL中查询两个日期之间的关系。查询正确日期并省略无效日期的最合适方法是什么C# 使用LINQ到SQL查询日期,c#,performance,linq,date,linq-to-sql,C#,Performance,Linq,Date,Linq To Sql,我在发布日期列中有这些记录,它们是字符串。我想在LINQ to SQL中查询两个日期之间的关系。查询正确日期并省略无效日期的最合适方法是什么 published date jan 11-oct 2010-09-09 feb feb-12 下面的代码解决了我的问题,但对于大型记录来说,这非常耗时,而且不是LINQ到SQL Func<string, DateTime?> tryToGetDate = value => { DateTime dateValue;
published date
jan
11-oct
2010-09-09
feb
feb-12
下面的代码解决了我的问题,但对于大型记录来说,这非常耗时,而且不是LINQ到SQL
Func<string, DateTime?> tryToGetDate = value =>
{
DateTime dateValue;
return DateTime.TryParse(value, out dateValue) ? (DateTime?)dateValue : null;
};
var dates = (from bookdetails in bookcategories
let dateValue = tryToGetDate(bookdetails.PublishedDate)
where dateValue != null
&& (DateTime)dateValue >= twomonths
&& (DateTime)dateValue <= today
orderby bookdetails.PublishedDate descending, bookdetails.BookId
select new BookInfo
{
BookId = bookdetails.BookId,
BookTitle = bookdetails.Title,
Images = bookdetails.ThumbnailImagePath,
PublishDate = bookdetails.PublishedDate,
AuthorList = bookdetails.BookAuthors.Select(q => q.Author.Author1).ToList(),
CategoryList =bookdetails.BookCategories.Select(q=>q.Category.CategoryName).ToList()
}).Take(2).ToList();
Func tryToGetDate=value=>
{
日期时间日期值;
return DateTime.TryParse(value,out dateValue)?(DateTime?)dateValue:null;
};
var日期=(来自bookcategories中的bookdetails
让dateValue=tryToGetDate(bookdetails.PublishedDate)
其中dateValue!=null
&&(DateTime)dateValue>=两个月
&&(DateTime)dateValue q.Author.Author1).ToList(),
CategoryList=bookdetails.BookCategories.Select(q=>q.Category.CategoryName).ToList()
}).取(2)ToList();
快速解决方案是
var dates = (from bookdetails in bookcategories
where SqlFunctions.IsDate(bookdetails.PublishedDate)==1
orderby bookdetails.PublishedDate descending, bookdetails.BookId)
.ToList()
.Where.(b=> Convert.ToDateTime(b.PublishedDate) >= twomonths
&& Convert.ToDateTime(b.PublishedDate) <= today);
var dates=(来自bookcategories中的bookdetails
其中SqlFunctions.IsDate(bookdetails.PublishedDate)=1
orderby bookdetails.PublishedDate降序,bookdetails.BookId)
托利斯先生()
.Where.(b=>Convert.ToDateTime(b.PublishedDate)>=两个月
&&Convert.ToDateTime(b.PublishedDate)你最好选择日期列,然后从中过滤出日期、月份、年份或你需要的任何组合。使用字符串,你将面临解析问题……我希望我可以,但问题是我不能。为什么你的日期DateTime
不在数据库中?我从google books api获取它,他们有dateti将列指定为字符串。即使他们的数据以字符串的形式返回,您肯定可以在输入数据库之前解析它?