2017-07-27 4 views
0

次の文法を正しく解釈するのは難しいです。LINQの別個のアイテムDateパーツのみSelect句のDateTimeフィールド

私はdateによってoptionNamesの別のリストを取得しようとしていますが、datetimeではありません。以下のLINQクエリは、日時のみ

var optionList = await db.OptionsStore.Select(x => new { x.OptionTime, x.OptionName }) 
.Distinct().ToListAsync(); 

x.OptionTimeで私に明確なリストを取得したDateTime型です。私は日付部分をwhere句でのみ使用し、select句では使用しない方法を知っています。 x.OptionTime.Dateにx.OptionTimeを変更すると、このエラーを与える:

System.NotSupportedException: 'The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported

は、クエリ内の日付に日付時刻を変換することは可能ですか、この私は後でそれを処理する必要があるでしょうか?そのため

+0

なぜそれを 'x.OptionTime.Date'に変更できませんか? –

+0

@RomanoZumbé - error-'System.NotSupportedExceptionが発生しました: '指定された型メンバー' Date 'は、LINQ to Entitiesではサポートされていません。イニシャライザ、エンティティメンバ、エンティティナビゲーションプロパティのみがサポートされています - 私はそれがプロパティだと思うと思います – pathDongle

答えて

2

使用EntityFunctions.TruncateTime()DateTime.DateはSQLに変換することはできません):

var optionList = await db.OptionsStore 
         .Select(x => new 
          { 
           OptionTime = EntityFunctions.TruncateTime(x.OptionTime), 
           OptionName = x.OptionName 
          }) 
         .Distinct() 
         .ToListAsync(); 
+0

優れています。ありがとうございました。 – pathDongle

1

あなたは多分System.Data.Entity.DbFunctions TruncateTime機能を試してみてください。

関連する問題