public void Delete(DateTime dateTime, Guid accountId, params Type[] types) { foreach (var type in types) { SQLiteCommand cmd = null; if (type == typeof(Commodity)) { continue; } else if (type == typeof(User)) { continue; } else if (type == typeof(Account)) { continue; } else if (type == typeof(ClosedTradeDetail)) { string sql = "DELETE FROM ClosedTradeDetail WHERE AccountId=@AccountId AND ActualDate>=@Date"; cmd = new SQLiteCommand(sql); ClosedTradeDetails.RemoveAll(m => m.AccountId == accountId && m.ActualDate >= dateTime.Date); } else if (type == typeof(CommoditySummarization)) { string sql = "DELETE FROM CommoditySummarization WHERE AccountId=@AccountId AND Date>=@Date"; cmd = new SQLiteCommand(sql); CommoditySummarizations.RemoveAll(m => m.AccountId == accountId && m.Date >= dateTime.Date); } else if (type == typeof(FundStatus)) { string sql = "DELETE FROM FundStatus WHERE AccountId=@AccountId AND Date>=@Date"; cmd = new SQLiteCommand(sql); FundStatus.RemoveAll(m => m.AccountId == accountId && m.Date >= dateTime.Date); } else if (type == typeof(Parameter)) { continue; } else if (type == typeof(PositionDetail)) { string sql = "DELETE FROM PositionDetail WHERE AccountId=@AccountId AND DateForPosition>=@Date"; cmd = new SQLiteCommand(sql); PositionDetails.RemoveAll(m => m.AccountId == accountId && m.DateForPosition >= dateTime.Date); } else if (type == typeof(Position)) { string sql = "DELETE FROM Position WHERE AccountId=@AccountId AND Date>=@Date"; cmd = new SQLiteCommand(sql); Positions.RemoveAll(m => m.AccountId == accountId && m.Date >= dateTime.Date); } else if (type == typeof(Remittance)) { string sql = "DELETE FROM Remittance WHERE AccountId=@AccountId AND Date>=@Date"; cmd = new SQLiteCommand(sql); Remittances.RemoveAll(m => m.AccountId == accountId && m.Date >= dateTime.Date); } else if (type == typeof(Stock)) { string sql = "DELETE FROM Stock WHERE AccountId=@AccountId AND Date>=@Date"; cmd = new SQLiteCommand(sql); Stocks.RemoveAll(m => m.AccountId == accountId && m.Date >= dateTime.Date); } else if (type == typeof(TradeDetail)) { string sql = "DELETE FROM TradeDetail WHERE AccountId=@AccountId AND ActualTime>=@Date"; cmd = new SQLiteCommand(sql); TradeDetails.RemoveAll(m => m.AccountId == accountId && m.ActualTime >= dateTime.Date); } else if (type == typeof(Trade)) { string sql = "DELETE FROM Trade WHERE AccountId=@AccountId AND Date>=@Date"; cmd = new SQLiteCommand(sql); Trades.RemoveAll(m => m.AccountId == accountId && m.Date >= dateTime.Date); } else { continue; } cmd.Parameters.AddWithValue("@AccountId", accountId.ToString()); cmd.Parameters.AddWithValue("@Date", dateTime.Date); cmds.Add(cmd); } }