当前位置:编程学习 > C#/ASP.NET >>

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

小弟在编程(一个新闻后台)的时候碰到一个问题,
就是要查询一下指定日期的新闻,我们用了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;
        }
     }
请问一下,是我的代码写错了,还是什么原因,如果要从数据库中查对应日期的条目,应该怎么查呢? --------------------编程问答--------------------  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();  


--------------------编程问答-------------------- 我这样能保证他输入的日期格式是正确的吗?为什么不用日期控件让用户选呢? --------------------编程问答-------------------- 不好意思,上面有点写错了
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()所以有疑问~ --------------------编程问答-------------------- 自己顶起来·救命呀~
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,