我试图在包含58个属性的ID3上构建启动子数据算法。我如何才能不使用循环(例如for或foreach)将每个属性内部化,从而使所有属性无效呢?
基本来说,我不想做下面的操作,我想用一个循环来完成它,但是我不能在曲线内部使用一个循环。
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
}
};发布于 2014-05-21 23:11:51
你可以:
Features = Enumerable.Range(1, 58)
.Select(x => new Feature(array[x - 1], x.ToString()))
.ToList()发布于 2014-05-21 23:31:34
另一个答案是好的,您肯定应该熟悉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
};https://stackoverflow.com/questions/23795327
复制相似问题