2016-07-14 7 views
1

年= xxxxの日付フィールドから別の月のリストを選択しようとしています。私はこのサイトで他の質問と回答を読んだことがあるが、私の仕事をするようには思えない。私は、エンティティに、エンティティフレームワークとLINQを使用しています - ここに私の最新のコードされています日付から月の別のリストを選択しようとしています。年= xxxx - エンティティへのlinq

Function BellMonthlySummaryMonthFiltering(years As Nullable(Of Integer), monthval As Nullable(Of Integer)) As JsonResult 


     If Not years Is Nothing Then 

      Dim listMonths As List(Of DateTime) = db.MobileBill_Summary.Where(Function(o) o.InvoiceDate.Year.Equals(years)).Select(Function(s) s.InvoiceDate.Month).Distinct.AsEnumerable.Select(Function(t) New DateTime(1999, t, 1)).ToList 
     End If 

     'Return Json(months, JsonRequestBehavior.AllowGet) 

    End Function 

これは私が取得エラーです:

追加情報:型「システムの一定の値を作成することができません。オブジェクト '。このコンテキストでは、プリミティブ型または列挙型のみがサポートされています。

Linq to entities distinct year from datetime column

+0

このクエリを無効にすることを開始しましょう。つまり、「うまくいくまで削除を開始してください」。最初の選択の後に別のものの前に試してみることをお勧めしますか? – Zach

+0

私はこのコードを変更しました。Dim ListMonths List(Of Integer)= db.MobileBill_Summary.Where(Function(o)o.InvoiceDate.Year.Equals(years))。(Function s s.InvoiceDate)を選択します。月).ToListと同じエラーが発生しました – PlasmaX

+0

最初の選択を解除します。あなたは私がこれでどこに行くのかを見なければなりません。それはあなたの 'o.InvoiceDate.Year.Equals(years)'かもしれません。代わりに '='を使用すると、それを修正する可能性があります。これは、それをSQLに変換しようとしているためです。 LINQの初期の時代には、日付用のヘルパー関数が組み込まれていました。 – Zach

答えて

0

変更あなたのところこれに句:私は、この記事の手順に従っ

Where(Function(o) o.InvoiceDate.Year = years) 

これは、EFは、SQLへの変換を行う方法によるものです。

関連する問題