我有一个从实体模型收集的IQueryable<Journey>。我想用它来获取一组新的IQueryable<Journey>,但是只能在特定的时间间隔内,从我网页上的2个文本框开始。

Journey具有作为字符串的“ Journey.DateFrom”和“ Journey.DateTo”(“ YYYYMMDD”)。

我以为我会做这样的事情:

(旅程是IQueryable<Journey>

if (tb_DateFrom.Text != ""){
    journeys = from j in journeys
               where Convert.ToInt32(j.DateTo) >= Convert.ToInt32(tb_DateFrom.Text)
               select j;
}
if (tb_DateTo.Text != ""){
        journeys = from j in journeys
                   where Convert.ToInt32(j.DateFrom) <= Convert.ToInt32(tb_DateTo.Text)
                   select j;
    }


但是我得到一个错误,说linq不知道如何做Convert.ToInt32,它也不知道如何做int.parse或datetime.parse。起作用的是使用IEnumerable<Journey>而不是IQueryable<Journey>,但是它是如此之慢,以至于网站崩溃,因为所比较的数据非常庞大。

我如何解决这个问题,这是将db中的格式转换为datetime的唯一答案?

请帮忙 :)

最佳答案

我会尝试这样的:

if (tb_DateFrom.Text != "") {
    journeys = from j in journeys
               where j.DateTo.CompareTo(tb_DateFrom.Text) >= 0
               select j;
}

if (tb_DateTo.Text != "") {
    journeys = from j in journeys
               where j.DateFrom.CompareTo(tb_DateTo.Text) <= 0
               select j;
}

关于c# - 如何在IQueryable <>中选择日期间隔?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5700578/

10-11 19:29