Member 13015340 Ответов: 1

Оператор '> 'не может быть применен к операндам типа 'object' и 'string'


private void button1_Click(object sender, EventArgs e) 
       {           
        string s=null;
        foreach (DataRow a in amDataSet.students.Rows)
        {
            if (a["id"] > s)
            {
                s = a["id"].ToString();
            }
        }
        MessageBox.Show(s);
        }


Что я уже пробовал:

Я хочу отобразить максимальное значение в поле ["id"] в massbox

[no name]

А какого результата вы ожидаете от DataRow > someString? Как вы думаете, каким будет максимальное значение для строки? Вы действительно хотите, чтобы эти значения были целыми числами?

[no name]

мне нужны значения из поля id тип данных это поле int

[no name]

Тогда зачем вы делаете их струнами?

[no name]

Потому что не принято целочисленно иметь дело с набором данных

1 Ответов

Рейтинг:
2

OriginalGriff

Строки на самом деле не имеют "максимальных" значений - они сравниваются, глядя на каждый символ по очереди, и все сравнение основано на первой паре различных символов. В результате порядок сортировки числовых значений в виде строк всегда выглядит странно: 1, 10, 11, ... 19, 2, 20, 21 ... И ваше поле ID вряд ли будет строковым в любом случае, большинство из них основаны на INT или GUID.

Если вы пытаетесь найти максимальное значение идентификатора в целочисленном столбце, то вообще не используйте строки:

int max = int.MinValue;
foreach (DataRow a in amDataSet.students.Rows)
   {
   int val = (int) a["ID"];
   max = val > max ? val : max;
   }
MessageBox.,Show(val.ToString());
Если это строковый столбец, содержащий числовые значения, то используйте соответствующий метод синтаксического анализа: int.Parse, double.Проанализируйте и т. д., а вместо этого сравните этот тип данных.


[no name]

спасибо вам, мистер @ OriginalGriff

OriginalGriff

Пожалуйста!
(Вам не нужно использовать "Mr "перед" OriginalGriff "- это не" настоящее " имя, это просто имя пользователя - и вам не нужен знак atsign перед именем пользователя, чтобы отправить сообщение. Система делает это автоматически.

0x01AA

Сэр, кажется, это помогло, так что а нажал на 5.

[no name]

Хорошо, я здесь новенький ^_ _ ^