1

私のsqlserverテーブルの列の1つはdatetimeです。where句では、年だけでクエリを実行します(月と日ではありません)。C# を使用して LINQ で実行する必要があります。どうすればそれができるか教えてください。

たとえば、次の表の値の場合

2010/02/12 2011/07/14 2012/11/15

「2011」までにクエリを実行すると、中央の行のみがフェッチされます。

ありがとう

4

1 に答える 1

2

これは非常に簡単に行うことができます。以下の例を参照してください

List<DateTime> test=new List<DateTime>{DateTime.Today,DateTime.Today.AddDays(3),DateTime.Today.AddYears(1),DateTime.Today.AddDays(1).AddYears(1)};

    test.Where (c => c.Year==2013).Dump();
    test.Where (c => c.Year==2012).Dump();

結果は

5IEnumerable<DateTime> (2 items) 4  
11/5/2013 12:00:00 AM 
11/6/2013 12:00:00 AM 

5IEnumerable<DateTime> (2 items) 4  
11/5/2012 12:00:00 AM 
11/8/2012 12:00:00 AM 

編集: Dump() 関数は LINQPad の一部です。これはネイティブの .NET メソッドではありません。LINQPad の外でテストするには、これを取り外します。

于 2012-11-06T03:49:10.517 に答える