2012-03-27 6 views
-5
bankOptionEntity.AutoCompleteForForm = 
    (string.Compare(dr["Value"].ToString().Trim(), "Y", true) == 0); 

ИЛИКакое утверждение более эффективно?

bankOptionEntity.AutoCompleteForForm = 
    dr["Value"].ToString().Trim().ToUpper().Equals("Y"); 
+1

Каковы результаты при их тестировании? – David

+0

почему вы не испытываете это самостоятельно? – Timmerz

+0

Вам нужно объяснить, почему вам нужен этот код, чтобы быть максимально эффективным. Две строки должны работать примерно одинаково afaik – Msonic

ответ

0

попробовать

var firstChar = dr["Value"].ToString()[0]; 
var ok = firstChar == 'y' || firstChar = 'Y'; 

и сделать некоторые производительности-тесты - но я не думаю, что это действительно будет проблемой.

PS: если предположить, что строка не пуста - если это может быть проблемой, сделать его

var value = dr["Value"].ToStrin(); 
var firstChar = String.IsNullOrEmpty(value) ? 'n' : value[0]; 
var ok = firstChar == 'y' || firstChar = 'Y'; 
0

Проверить это post вне. На мой взгляд, поскольку вам не нужно учитывать сравнение с культурой, Equals должен быть более эффективным, чем метод Compare. Однако обратите внимание, что методы Trim и ToUpper имеют стоимость выполнения.

С уважением,

+0

спасибо josemiguel – Flintstone

0

Если вы выполняете этот код в длинном цикле, вопрос не является сравнение строк, но способ доступа к колонку в программе чтения данных. Сначала введите номер столбца и используйте его в цикле.

int valueOrdinal = dr.GetOrdinal("Value"); 
while (dr.Read()) { 
    bool ok = dr.GetString(valueOrdinal).Trim().ToUpper() == "Y"; 
    ... 
} 

Если у вас короткая петля или нет петли, все равно это не имеет значения.