/// <summary> /// Reads a Comma Separated file and outputs an IObservable of Events /// </summary> /// <param name="filename">Full path of file</param> /// <param name="stockID">StockID for the Events</param> /// <param name="fieldIDs">Fields to include in the production of Events</param> /// <returns>An IObservable of Stock Quotes</returns> public static IEnumerable <StockQuote> GetStockEnumerable(string filename, string stockID, string[] fieldIDs) { // Read file header and extract field names var streamReader = new StreamReader(filename); var line = streamReader.ReadLine(); var values = line.Split(','); var fields = new SortedList <string, int>(values.Length); for (int i = 0; i < values.Length; i++) { fields.Add(values[i], i); } // Create List for holding the quotes var quotes = new List <StockQuote>(); // Read remaining lines while (!streamReader.EndOfStream) { line = streamReader.ReadLine(); values = line.Split(','); var timestamp = DateTime.Parse(values[0], QuoteFormatProvider); // Add a quote for every fieldID foreach (var fieldID in fieldIDs) { var quote = new StockQuote(); var value = values[fields[fieldID]]; quote.TimeStamp = timestamp; quote.StockID = stockID; quote.FieldID = fieldID; quote.Value = double.Parse(value, QuoteFormatProvider); quotes.Add(quote); } } streamReader.Close(); // Sort the List quotes.Sort((x, y) => DateTimeOffset.Compare(x.TimeStamp, y.TimeStamp)); // Convert the List into an IObservable and return return(quotes); }
/// <summary> /// Reads a Comma Separated file and outputs an IObservable of Events /// </summary> /// <param name="filename">Full path of file</param> /// <param name="stockID">StockID for the Events</param> /// <param name="fieldIDs">Fields to include in the production of Events</param> /// <returns>An IObservable of Stock Quotes</returns> public static IEnumerable<StockQuote> GetStockObservable(string filename, string stockID, string[] fieldIDs) { // Read file header and extract field names var streamReader = new StreamReader(filename); var line = streamReader.ReadLine(); var values = line.Split(','); var fields = new SortedList<string, int>(values.Length); for (int i = 0; i < values.Length; i++) fields.Add(values[i], i); // Create List for holding the quotes var quotes = new List<StockQuote>(); // Read remaining lines while (!streamReader.EndOfStream) { line = streamReader.ReadLine(); values = line.Split(','); var timestamp = DateTime.Parse(values[0], QuoteFormatProvider); // Add a quote for every fieldID foreach (var fieldID in fieldIDs) { var quote = new StockQuote(); var value = values[fields[fieldID]]; quote.TimeStamp = timestamp; quote.StockID = stockID; quote.FieldID = fieldID; quote.Value = double.Parse(value, QuoteFormatProvider); quotes.Add(quote); } } streamReader.Close(); // Sort the List quotes.Sort((x, y) => DateTimeOffset.Compare(x.TimeStamp, y.TimeStamp)); // Convert the List into an IObservable and return return quotes; }