Пример #1
0
        /// <summary>
        /// Reads a queryresult file, given a streamreader.
        /// </summary>
        /// <param name="reader">The streamreader.</param>
        /// <returns>The array with queryresult.</returns>
        public QueryResult[] ConvertFile(StreamReader reader)
        {
            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            List <QueryResult> results = new List <QueryResult>();

            using (CsvReader csv = CsvReader(reader)) {
                // Csv syntax for reading headers.
                csv.Read();
                csv.ReadHeader();
                // Read the header, to see which measures there are.
                string[] kNames = FilterHeader(csv);
                // Find the individual values.
                while (csv.Read())
                {
                    // Check to see if there is an entry here.
                    if (!csv.TryGetField(MeshName, out string name))
                    {
                        break;
                    }
                    QueryResult query = new QueryResult(name);
                    foreach (string kName in kNames)
                    {
                        if (csv.TryGetField(kName, out string serialised) &&
                            QueryItem.TryParse(serialised, out QueryItem item))
                        {
                            query.AddItem(item);
                        }
                    }
                    //else break;
                    results.Add(query);
                }
            }
            return(results.ToArray());
        }