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 に答える