使用循环初始化多个对象

时间:2014-05-21 23:09:30

标签: c# algorithm decision-tree id3

我正在尝试在promoters data上构建包含58个属性的ID3算法。我怎样才能使用循环(例如for或foreach)来初始化每个单独的属性而不是初始化所有?

基本上没有做下面的事情我想用循环来做但我不能在curlies中使用循环

var splits = line.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);

        var name = splits[1];
        var data = splits[2].Trim();
        string[] array = null;
        for (int i = 0; i < data.Length; i++)
        {
            array[i]= data.ToCharArray().GetValue(i).ToString();
        }

        return new Instance
        {
            Output = new Output(splits[0], "Result"),
            Features = new List<Feature>
                                  {
                                  new Feature(array[0], "1"),
                                  new Feature(array[1], "2"),
                                  new Feature(array[2], "3"),
                                  new Feature(array[3], "4"),
                                  //and so on for all atributes
                                  }
        };

2 个答案:

答案 0 :(得分:2)

你可以这样做:

Features = Enumerable.Range(1, 58)
            .Select(x => new Feature(array[x - 1], x.ToString()))
            .ToList()

答案 1 :(得分:0)

另一个答案是好的,你应该在这种情况下熟悉LINQ。但是,如果您想了解如何使用您已熟悉的语言功能轻松完成此操作,您可以这样做:

var features = new List<Feature>();
for(int i = 0; i < 58; i++)
{
    features.Add(new Feature(array[i], (i+1).ToString()));
}

然后在创建Instance时指定此内容:

return new Instance
{
    Output = new Output(splits[0], "Result"),
    Features = features
};