-4

LINQPADで作業中に月の名前を印刷するためのLinqの組み込み関数はありますか?

次のシナリオで月名を印刷したい

var query = from e in Employees
           let month=e.BirthDate.GetValueOrDefault()
           let birthmonth=month.ToString("MMMM")
           select birthmonth;
           query.Dump();

これを実行すると、NotSupportedException がスローされます。Linqの月名をSqlに出力するには?

4

2 に答える 2

0

1 つはデータベースから月を取得し、もう 1 つは Linq-To-Objects を使用してフォーマットを実行します。

var birthDates = Employees.Select(e => e.BirthDate).ToList();
var query = birthDates.Select(d => d != null ? d.ToString("MMMM") : "Null");
query.Dump();

使用しているORMが何であれ、クエリの文字列フォーマット部分をデータベースで機能するSQLに変換することはできません。そのため、2 つのステップで実行し、ToList中間で評価するために使用することで、この問題を解決できます。

于 2012-09-07T08:26:20.003 に答える
0

を使用するのではなくToString、試してみてくださいstring.Format。何かのようなもの:

var query = (from e in Employees
           let month = e.BirthDate.GetValueOrDefault()
           let birthmonth = string.Format("{0:MMMM}", month)
           select birthmonth);
query.Dump();

これは、SQL クエリの一部として含まれていませんが、私のローカル テストでは機能しているようです。

于 2012-09-15T16:21:54.897 に答える