(在线等)linqdatasource中怎么对date类型进行比较?为什么compareto()不能用

skytaxy 2008-12-26 01:07:15
小弟在编程(一个新闻后台)的时候碰到一个问题,
就是要查询一下指定日期的新闻,我们用了LINQ TO SQL 操作数据库,用的控件是linqdatasource,但是在对数据库按时间查询时,却提示LINQ不能识别这个方法。
代码如下:
db = new CITDatabaseEntities();
DateTime result;
bool r;
int IDDL = Int32.Parse(ItemDropDownList.SelectedValue);
r=DateTime.TryParse(CXNewsTextBox.Text, out result);
if (r)
{
result = DateTime.Parse(CXNewsTextBox.Text).Date ;
ItemNewsRelations[] cxItemNR = db.ItemNewsRelations.Where(cxIN => cxIN.Item_Id == IDDL).ToArray();
if (cxItemNR.Length != 0)
{
LinqDataSource1.Where = "Item_Id ==" + cxItemNR[0].Item_Id.ToString() + "&& News.PublishDate.ToString().CompareTo(" + result.ToString() + ")>=0";
Label1.Visible = false;
}
else
{
Label1.Visible = true;
}
}
else
{
ItemNewsRelations[] cxItemNewsR = db.ItemNewsRelations.Where(cxINR => cxINR.Item_Id == IDDL && cxINR.News.Title == CXNewsTextBox.Text).ToArray(); //这一句为按时间查询CXNewsTextBox.Text中输入的为时间IddL为对应的栏目
if (cxItemNewsR.Length == 1)
{
LinqDataSource1.Where = "Item_Id ==" + cxItemNewsR[0].Item_Id.ToString() + "&& News_id==" + cxItemNewsR[0].News_id.ToString();
Label1.Visible = false;
}
else
{
Label1.Visible = true;
}
}
请问一下,是我的代码写错了,还是什么原因,如果要从数据库中查对应日期的条目,应该怎么查呢?
...全文
307 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
skytaxy 2008-12-26
  • 打赏
  • 举报
回复
自己顶起来·救命呀~
skytaxy 2008-12-26
  • 打赏
  • 举报
回复
不好意思,上面有点写错了
if (r)
{
result = DateTime.Parse(CXNewsTextBox.Text).Date ;
ItemNewsRelations[] cxItemNR = db.ItemNewsRelations.Where(cxIN => cxIN.Item_Id == IDDL).ToArray();
if (cxItemNR.Length != 0)
{
LinqDataSource1.Where = "Item_Id ==" + cxItemNR[0].Item_Id.ToString() + "&& News.PublishDate.ToString().CompareTo(" + result.ToString() + ")>=0";
Label1.Visible = false;
中的result.ToString() 为按时间类型的变量,我这里是在一个对话框里,他可以输新闻标题,也可以输入日期,通过
r=DateTime.TryParse(CXNewsTextBox.Text, out result);
if (r)
判断是否是日期,如果是日期就按日期查询,如果不是,则按新闻标题查询,但是现在就是在时间查询时,LINQ好像不支持COMPARETO()但是MSDN中说LINQ支持COMPARETO()所以有疑问~
wangping_li 2008-12-26
  • 打赏
  • 举报
回复
我这样能保证他输入的日期格式是正确的吗?为什么不用日期控件让用户选呢?
wangping_li 2008-12-26
  • 打赏
  • 举报
回复
ItemNewsRelations[] cxItemNewsR = db.ItemNewsRelations.Where(cxINR => cxINR.Item_Id == IDDL && cxINR.News.Title == CXNewsTextBox.Text).ToArray(); //这一句为按时间查询CXNewsTextBox.Text中输入的为时间IddL为对应的栏目

你这个是什么意思?cxINR.News.Title是DateTime类型吗?
如果是日期类型改成

ItemNewsRelations[] cxItemNewsR = db.ItemNewsRelations.Where(cxINR => cxINR.Item_Id == IDDL && Convert.ToDateTime(cxINR.News.Title.ToShortDateString()) == Convert.ToDateTime(CXNewsTextBox.Text)).ToArray();


111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧