0

C#、.NET Framework 4.0、およびEntity Framework Code Firstを使用して WCF RESTful サービスを開発しています。

私はこのクラス(データベース上のテーブルを表す)を持っています:

[DataContract]
public class PostLine
{
    public int PostLineId { get; set; }

    [DataMember]
    public int? UserId { get; set; }

    [DataMember]
    public string Description { get; set; }

    [DataMember]
    public string DateUtc { get; set; }

    public User Author { get; set; }
}

そして、私はこれをやろうとしています:

DateTime fourDaysAgo = DateTime.Now.Date.AddDays(-4);

var postLines = 
    context.PostLines.Where(p => DateTime.Compare(DateTime.Parse(p.DateUtc), fourDaysAgo) > 0).Include("Author");

しかし、次のエラーが表示されます。

{System.NotSupportedException: LINQ to Entities doesn't recognize the method 'System.DateTime Parse(System.String)', which can not be converted into an expression of the repository.

Web サービスで使用し、JSON として送信するため、文字列である必要があるPostLine.DateUtcため、文字列として保存する方が適切です。

タイプを使用するDateTimeと、JSON 応答で次のような結果が得られます。

{
    "DateUtc": "/Date(1380924000000+0200)/",
    "Description": "post_1",
    "UserId": 1
}

LINQ 式で文字列を DateTime と比較する方法を知っていますか?

4

4 に答える 4

1

をインスタンス化する方法がわかりませんDataContractJsonSerializer。直接インスタンス化する場合...シリアル化方法を設定DataContractJsonSerializerSettingsするために、を渡すことができます。DateTimeFormatDateTime

ビヘイビアーを使用してシリアライザーをインスタンス化する場合、状況はもう少し複雑になります。

于 2013-10-05T18:12:50.690 に答える