0

LINQ で次のクエリを使用して、グループ化されたデータを取得します。

string fmt = "yyyyMM";
var pivotedMeanResults =
    meanDataResults
    .GroupBy(i => i.Description)
    .Select(g => new PivotedMeanData
    {
        Description = g.Key,
        Month3Value = g.Where(c => DateTime.ParseExact(c.CollectionPeriod, fmt, invariantCulture).Month == currentMonth - 3).FirstOrDefault().LabResultNo.ToString(),
        Month2Value = g.Where(c => DateTime.ParseExact(c.CollectionPeriod, fmt, invariantCulture).Month == currentMonth - 2).FirstOrDefault().LabResultNo.ToString(),
        Month1Value = g.Where(c => DateTime.ParseExact(c.CollectionPeriod, fmt, invariantCulture).Month == currentMonth - 1).FirstOrDefault().LabResultNo.ToString()
        Month3Name = ? //
        Month2Name = ? //
        Month1Name = ? //
    }).ToList();

データの形式は次のとおりです。

Item    Collection_Period   Value
====    =================   =====
Item4       201308          19
Item3       201209          2.1
Item2       201307          345
Item1       201309          13.11
Item2       201308          34
Item4       201308          58.2
Item3       201209          2.4
Item2       201309          12.1
Item1       201209          12.3

データをこの形式に操作する必要があり、必要に応じて取得しています。

Item    Month3Name  Month2Name  Month1Name
=====   =========   =========   =========
Item1                           13.11
Item2   345         34          12.1
Item3   
Item4   19          58.2

しかし、グループ化で同等の月の値がどのように導出されるかに基づいて、月の名前 (Month1Name、Month2Name、Month3Name) を取得できるかどうかを知りたいですか?


PS: 月の名前を次のように生成できることはわかっています。

CultureInfo cInfo = new CultureInfo("en-US");
DateTimeFormatInfo english = cInfo.DateTimeFormat;
english.GetAbbreviatedMonthName(integer)

だから私はこれを試しました

Month3Name = english.GetAbbreviatedMonthName
(g.Where(DateTime.ParseExact(c.CollectionPeriod, fmt, invariantCulture)
.Month == currentMonth - 3))

しかし、私はエラーが発生します:

<Namespace.Type.MeanData>引数 1: 'System.Collections.Generic.IEnumerable ' から 'int' に変換できません

'System.Globalization.DateTimeFormatInfo.GetAbbreviatedMonthName(int)' に最も一致するオーバーロードされたメソッドには、いくつかの無効な引数があります

4

2 に答える 2

1

現在の月の名前 -1、-2、-3 が必要です。

それでは、なぜデータのサブセットから月の名前を取得しようとしているのでしょうか??

Month3Name = english.GetAbbreviatedMonthName(currentMonth - 3)

あなたに月の名前を付ける可能性が高いと思われますか?

はい、1月から2を引いて有効な月を期待することはできません:)

于 2013-10-21T12:51:57.903 に答える
0

以下のように日付をフォーマットするだけです。日付の月名を返します。

        string month = DateTime.Now.ToString("MMMM", new CultureInfo("en-US"));
        //or
        month = new DateTime(1, 3, 1).ToString("MMMM", new CultureInfo("en-US"));
于 2013-10-21T12:53:36.250 に答える