public static void RunProgram() { var listOfDateString = new List <string> { "20/01/2013", "01/01/2020", "N/A", "10/01/2020", "20/01/2019" }; Console.WriteLine($"Sort list date string, input : "); listOfDateString.ForEach(x => { Console.WriteLine(x); }); Console.WriteLine($"Sort by date, output : "); listOfDateString.SortByDate().ForEach(x => { Console.WriteLine(x); }); var listOfDates = new List <DateTime> { new DateTime(1980, 5, 5), new DateTime(1982, 10, 20), new DateTime(1984, 1, 4), new DateTime(1979, 6, 19) }; Console.WriteLine($"Sort list of dates, input : "); listOfDates.ForEach(x => { Console.WriteLine(x); }); Console.WriteLine($"Sort by ascending result : "); listOfDates.SortByDateAsc().ForEach(x => { Console.WriteLine(x); }); Console.WriteLine($"Sort by desc result : "); listOfDates.SortByDateDesc().ForEach(x => { Console.WriteLine(x); }); }
public void SortTest() { var time = DateTime.UtcNow; var list = new List <Trade> { new SellTrade() { Date = time.AddMilliseconds(1), FiatFees = 3 }, new SellTrade() { Date = time, FiatFees = 2 }, new BuyTrade() { Date = time, FiatFees = 1 } }; list.SortByDate(); Assert.AreEqual(1, list[0].FiatFees); Assert.AreEqual(2, list[1].FiatFees); Assert.AreEqual(3, list[2].FiatFees); }
private List <Item> SortItems(List <Item> items) { switch (Settings.Current.UserSettings.SortItemsBy) { case SortBy.Site: return(items.SortBySite()); case SortBy.Date: default: return(items.SortByDate()); } }
static void Main() { Console.ForegroundColor = ConsoleColor.Gray; var cfg = Config.FromFile("config.json"); var provider = new GoogleSheetsProvider(cfg); var parsers = new ITradeParser[] { new KrakenLedgerParser(), // Kraken Ledger before Trades ALWAYS new KrakenTradesParser(), new BittrexParser(), new BinanceParser() }; var priceProvider = new CoinPaprikaPriceProvider(cfg.FiatProvider); // Parser trades var trades = new List <Trade>(); var dataSource = new TradeDataSource() { Data = provider.GetData().ToArray() }; foreach (var parser in parsers) { foreach (var data in dataSource.Data) { if (data.Parsed || !parser.IsThis(data)) { continue; } trades.AddRange(parser.GetTrades(dataSource, data)); data.Parsed = true; } } // Sort trades by date trades.SortByDate(); // Compute fiat values trades.ComputeFiatValues(priceProvider); // Compute fifo var profits = new Dictionary <int, YearProfit>(); trades.ComputeFifo(out var fifo, (trade, fee) => { if (!profits.TryGetValue(trade.Date.Year, out var profit)) { profit = new YearProfit() { Year = trade.Date.Year }; profits.Add(profit.Year, profit); } profit.Fee += fee; }, (trade, buyPrice, sellPrice, amount) => { if (buyPrice <= 0) { //Console.WriteLine("Buy not found for: " + trade.ToString()); } if (!profits.TryGetValue(trade.Date.Year, out var profit)) { profit = new YearProfit() { Year = trade.Date.Year }; profits.Add(profit.Year, profit); } profit.Buyed += (amount * buyPrice); profit.Sold += (amount * sellPrice); profit.Profit += (amount * sellPrice) - (amount * buyPrice); } ); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(JsonConvert.SerializeObject(profits, Formatting.Indented)); Console.ForegroundColor = ConsoleColor.Gray; }
private void ShowFirstItem() { if (Settings.Current.UserSettings.ImagesEnabled) { BackgroundDownloadImages(); } _itemsForSelectedCategories = new List <Item>(); // Use local variables to avoid repeated calls var allItems = Repository.Default.ListItems(); var lastCategories = Settings.Current.LastCategories; foreach (Item currentitem in allItems) { if (lastCategories.Contains(currentitem.Feed.Category)) { _itemsForSelectedCategories.Add(currentitem); } } // Filter out read items, if it's enabled. if (Settings.Current.UserSettings.IgnoreReadItems) { _itemsForSelectedCategories = _itemsForSelectedCategories.Where(i => !i.IsRead).ToList(); } // Nothing to work with, show the empty message if (_itemsForSelectedCategories.Count == 0) { Settings.Current.LastItemId = ""; _webView.LoadHtmlString(HtmlTemplate.EmptyHtml(), new NSUrl("/")); return; } else { switch (Settings.Current.UserSettings.SortItemsBy) { case SortBy.Site: _itemsForSelectedCategories = _itemsForSelectedCategories.SortBySite(); break; case SortBy.Date: default: _itemsForSelectedCategories = _itemsForSelectedCategories.SortByDate(); break; } UpdateArrowButtons(); // Show the first item _currentItemIndex = 0; // Use the last item that was viewed, if it exists Item item = null; if (!string.IsNullOrEmpty(Settings.Current.LastItemId)) { try { Guid guid = new Guid(Settings.Current.LastItemId); item = _itemsForSelectedCategories.FirstOrDefault(i => i.Id == guid); } catch (FormatException) { } } if (item != null) { // Put it at the start of the list, and remove it from wherever it is _itemsForSelectedCategories.Remove(item); _itemsForSelectedCategories.Insert(0, item); } else { // No saved item, use the first item = _itemsForSelectedCategories[0]; } Settings.Current.LastItemId = item.Id.ToString(); _webView.LoadHtmlString(HtmlTemplate.HtmlForItem(item), new NSUrl("/")); } }
private List<Item> SortItems(List<Item> items) { switch (Settings.Current.UserSettings.SortItemsBy) { case SortBy.Site: return items.SortBySite(); case SortBy.Date: default: return items.SortByDate(); } }
private void ShowFirstItem() { if (Settings.Current.UserSettings.ImagesEnabled) { BackgroundDownloadImages(); } _itemsForSelectedCategories = new List<Item>(); // Use local variables to avoid repeated calls var allItems = Repository.Default.ListItems(); var lastCategories = Settings.Current.LastCategories; foreach (Item currentitem in allItems) { if (lastCategories.Contains(currentitem.Feed.Category)) _itemsForSelectedCategories.Add(currentitem); } // Filter out read items, if it's enabled. if (Settings.Current.UserSettings.IgnoreReadItems) _itemsForSelectedCategories = _itemsForSelectedCategories.Where(i => !i.IsRead).ToList(); // Nothing to work with, show the empty message if (_itemsForSelectedCategories.Count == 0) { Settings.Current.LastItemId = ""; _webView.LoadHtmlString(HtmlTemplate.EmptyHtml(), new NSUrl("/")); return; } else { switch (Settings.Current.UserSettings.SortItemsBy) { case SortBy.Site: _itemsForSelectedCategories = _itemsForSelectedCategories.SortBySite(); break; case SortBy.Date: default: _itemsForSelectedCategories = _itemsForSelectedCategories.SortByDate(); break; } UpdateArrowButtons(); // Show the first item _currentItemIndex = 0; // Use the last item that was viewed, if it exists Item item = null; if (!string.IsNullOrEmpty(Settings.Current.LastItemId)) { try { Guid guid = new Guid(Settings.Current.LastItemId); item = _itemsForSelectedCategories.FirstOrDefault(i => i.Id == guid); } catch (FormatException) { } } if (item != null) { // Put it at the start of the list, and remove it from wherever it is _itemsForSelectedCategories.Remove(item); _itemsForSelectedCategories.Insert(0, item); } else { // No saved item, use the first item = _itemsForSelectedCategories[0]; } Settings.Current.LastItemId = item.Id.ToString(); _webView.LoadHtmlString(HtmlTemplate.HtmlForItem(item), new NSUrl("/")); } }