1

私はこのデータテーブルの結果をC#で持っています

DAY      Employee Job1   Job2   Job3
1/1/2012    a    1      1      1 
1/1/2012    b    2      2      2
1/1/2012    c    2      1      4
1/1/2012    d    4      2      1
1/2/2012    a    3      2      5
1/2/2012    b    2      2      2
1/2/2012    c    3      3      3
1/2/2012    d    1      1      1
1/3/2013    a    5      5      5
1/3/2013    b    2      2      6
1/3/2013    c    1      1      1
3/13/2013   d    2      3      4
2/1/2013    a    2      2      2
2/1/2013    b    5      5      2
2/7/2013    c    2      2      2
2/5/2013    a    3      3      3
3/2/2013    b    2      3      3
2/1/2013    a    4      4      2

ここで、最初の列 (MM/dd/yyyy) から最大の日付を見つけたいと思います。これは 2013 年 3 月 13 日になるはずです。また、この列は文字列データ型であることに注意してください。

c# で「Linq」を使用してこれを行う方法を誰かに提案してもらえますか、またはこれを行う簡単な方法はありますか?

4

2 に答える 2

2

DateTime.Parseまたはを使用DateTime.ParseExactして、文字列を解析してデータ時間に変換します。これはうまくいくはずです:

DateTime maxDate = table.AsEnumerable()
    .Max(r => DateTime.Parse(r.Field<string>("DAY")));

とはいえ、そもそもなんで文字列なの?

編集 この文字列の作成に使用された文化も考慮する必要があります。文字列を解析するときに、このカルチャを再度使用する必要があります。

したがって、この結果はさまざまな文化で機能しますが、結果は次のように異なります。

System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
DateTime maxDate = table.AsEnumerable()
    .Max(r => DateTime.Parse(r.Field<string>("DAY")));
Console.WriteLine(maxDate);
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("de-DE"); // germany
maxDate = table.AsEnumerable()
    .Max(r => DateTime.Parse(r.Field<string>("DAY")));
Console.WriteLine(maxDate);
于 2013-03-16T12:40:50.090 に答える
0

同じ会社で作成されたプログラムであっても、プログラム間のフォーマットは煩わしい場合があります。このスレッドは似ており、うまくいけば正しい方向にあなたを向けます:

Excelシートからインポートする際の日時形式の不一致

それがであることが確認された場合Stringは、簡単なことを試しました DateTime dt = Convert.ToDateTime(date);か?

于 2013-03-16T12:08:29.733 に答える