0

在我当前的查询中,我遇到了这样的错误:

The datetime literal value '2012-05-24' is not valid.   

对于常规 linq 查询,它看起来像这样:

_listHistory = (from item in dbase.histories
                where item.UserID == details.UserID && item.FriendID.HasValue == true && item.LogDate < today
                select item).OrderByDescending(x => x.LogDate).Take(take).Skip(skip).ToList();  

我将处理表“ Columns”的数量,所以我必须使用 linq 谓词:

string predicate = string.Format("it.UserID=={0} && CAST(it.{1} as Edm.Int64) != null  && it.LogDate <= DATETIME'{2}'",
            details.UserID, columnname, string.Format("{0:yyyy-MM-dd}", today));

_listHistory = dbase.histories.Where(predicate)
                .OrderByDescending(x => x.LogDate).Take(take).Skip(skip).ToList();  

但是这个查询导致了上面的错误。谁能帮我构建我的 linq 查询?
这是我第一次处理 Linq 谓词和文字。

4

1 回答 1

2

您可能会改用动态 LINQ 支持,但假设这是实体查询语言,您似乎可以通过调用 CreateDateTime 来构造日期时间:

http://msdn.microsoft.com/en-us/library/bb738563.aspx

CreateDateTime( year, month, day, hour, minute, second)
于 2012-05-25T03:17:09.220 回答