如何选择数据结构

时间:2013-07-17 06:39:55

标签: c# data-structures

我有一个这样的数据表。

table of data

我想在

上执行大量操作
  • 晴天时播放'不'的次数
  • 当PLAY为'是'时,WINDY'真实'多少次

我应该使用哪种数据结构? 现在我有一个简单的数组,它正在成为一个需要控制的任务。

string[,] trainingData = new string[noOfRecords,5];
        using (TextReader reader = File.OpenText("input.txt"))
        {
            int i =0;
            string text = "";
            while ((text = reader.ReadLine()) != null)
            {
                string[] bits = text.Split(' ');
                for (int j = 0; j < noOfColumnsOfData; j++)
                {
                    trainingData[i, j] = bits[j];
                }
                i++;
            }
        } 

3 个答案:

答案 0 :(得分:3)

扩大@Doan cuong的anwer, 我会使用一个可以想象的对象列表。 每个对象都可以是calle:Record和集合可以称为Table。 (表是IEnumarable)。

这是一个简单的例子:

static void Main(string[] args)
        {
            Table table = new Table();
            int count1 = table.records.Where(r => r.Play == false && r.Outlook.ToLower() == "sunny").Count();
        }

        public class Record
        {
            public bool Play;
            public string Outlook;
        }


        public class Table
        {
            //This should be private and Table should be IEnumarable
            public List<Record> records = new List<Record>(); 

        }

答案 1 :(得分:1)

这是一个非常令人不安的问题,因为它的意见不仅仅是一个有效的编程问题。很多程序员会说这个或那个。对于您正在显示的表,使用数组没有问题,就像您提到的简单查询一样。对于更复杂的数据和查询,我建议您花时间和精力学习LINQ

答案 2 :(得分:1)

创建一个类并将值写入属性。即:

public class Weather
{
 public string Outlook {get;set;}
 ...
}

然后将它们存储到List<Weather>集合中(在循环期间)。就像已经说过的那样,你可以对它运行LINQ个查询。互联网上充满了如何使用LINQ的示例。