0

Metadaメソッドを使用してVisualStudio2010を使用し、C#の患者データセットから不均等な年齢グループのセットを作成する必要があります

年齢層は<=40、41-50、51-60、61-70、70+です

現在、5歳の年齢層を実行するためのコードがいくつかあります。

public string AgeGroup5Yrs
    {
        get
        {
            int range = Math.Abs(Age / 5) * 5;
            return string.Format("{0} - {1}", range, range + 5);
        }
    }

そして約10年(同じ年齢層)

public string AgeGroup
    {
        get
        {
            int range = Math.Abs(Age / 10) * 10;
            return string.Format("{0} - {1}", range, range + 10);
        }
    }

しかし、私はいくつかの不平等なグループが必要です!何か案は?私はC#を初めて使用するので、ヘルプは役に立ちます

4

1 に答える 1

0

これは使用するArray.BinarySearchので、かなりパフォーマンスが高いはずです。indexOf次に大きい境界のインデックスが含まれることになります。

static int[] boundaries = new[] { 40, 50, 60, 70 };
static string AgeGroupFor
{
    get
    {
        int indexOf = Array.BinarySearch(boundaries, Age);
        if (indexOf < 0)
            indexOf = ~indexOf;
        if (indexOf == 0)
            return "<= " + boundaries[0];
        if (indexOf == boundaries.Length)
            return (boundaries[boundaries.Length - 1]) + "+";
        return (boundaries[indexOf - 1]+1) + "-" + boundaries[indexOf];
    }
}

または、文字列を事前に計算することもできます。

static int[] boundaries = new[] { 40, 50, 60, 70 };
static string[] groups = new[] { "<= 40", "41-50", "51-60", "61-70", "70+" };
static string AgeGroupFor
{
    get
    {
        int indexOf = Array.BinarySearch(boundaries, Age);
        if (indexOf < 0)
            indexOf = ~indexOf;
        return groups[indexOf];
    }
}
于 2012-11-23T11:35:29.217 に答える