4

テーブルに という列があり、この日付とDateを比較する必要があります。WeekOfTheYearDateTime.NowWeekOfTheYear

このままあげたら、

var cal = CultureInfo.CurrentCulture.Calendar;

int week = cal.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);

私は26ここに来ています。同じように、私の Entity Framework では、今週のデータを比較する必要があります。

entities.WorkingDays.Where(a => 
             cal.GetWeekOfYear(a.DATE,CalendarWeekRule.FirstDay,DayOfWeek.Sunday)
             == cal.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay,
                                                 DayOfWeek.Sunday)

このようにクエリを実行すると、次のようなエラーが発生します。

「LINQ to Entities はメソッド 'Int32 GetWeekOfYear (System.DateTime, System.Globalization.CalendarWeekRule, System.DayOfWeek)' メソッドを認識せず、このメソッドはストア式に変換できません。」

ここで毎週のデータを取得するにはどうすればよいですか、誰か助けてもらえますか....事前に感謝します

4

2 に答える 2

2

最初に .ToList() を呼び出します。このような:

entities.WorkingDays.ToList().Where(a => 
             cal.GetWeekOfYear(a.DATE,CalendarWeekRule.FirstDay,DayOfWeek.Sunday)
             == cal.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay,
                                                 DayOfWeek.Sunday)

重複する問題については、この投稿を参照してください。基本的に、GetWeekOfYear 関数を使用する前に、データがメモリ内にある必要があります。

コメントに記載されているように、これにより「WorkingDays」テーブル全体がメモリに取り込まれるため、DB から必要以上のデータがフェッチされます。アプリケーション/データベース アーキテクチャに基づくデータ量やその他の要因によっては、これがストアド プロシージャを使用するよりも好ましい場合もあれば、そうでない場合もあります。

于 2012-06-29T12:06:14.527 に答える