0

我需要使用 Visual Studio 2010 使用 Metada 方法从 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 回答