5

DateTimeのプロパティを持つBillingsというエンティティがあります。日付を一意に見つけて、それらを調べていくつかのことを実行できるようにする必要があります。私は試した:

var DistinctYearMonthsDays = (from t in db.Billings 
                              where t.DateTime.HasValue 
                              select   t.DateTime.Value.Date).Distinct();

foreach (var day in DistinctYearMonthsDays)

しかし、私は(上でforeach)取得します:

指定されたタイプメンバー'Date'は、LINQtoEntitiesではサポートされていません。初期化子、エンティティメンバー、およびエンティティナビゲーションプロパティのみがサポートされます。

検索した後、私も成功せずに次のことを試みました:

IEnumerable<DateTime> DistinctYearMonthsDays = db.Billings
    .Select(p => new 
        {              
            p.DateTime.Value.Date.Year,
            p.DateTime.Value.Date.Month,
            p.DateTime.Value.Date.Day 
         }).Distinct()
         .ToList()
         .Select(x => new DateTime(x.Year,x.Month,x.Day));

どんな助けでも大歓迎です。

4

1 に答える 1

10

組み込みの EntityFunctions を使用できます。クエリは次のようになります。

var DistinctYearMonthsDays = (from t in db.Billings 
                              where t.DateTime.HasValue 
                              select EntityFunctions.TruncateTime(t.DateTime)).Distinct();

EntityFunctions の詳細については、MSDNを確認してください。

于 2012-07-17T14:44:15.150 に答える