【问题标题】:Operator '>' cannot be applied to operands of type 'object' and 'string' [duplicate]运算符“>”不能应用于“对象”和“字符串”类型的操作数 [重复]
【发布时间】:2017-10-12 15:15:16
【问题描述】:

我想在massbox的["id"]字段中显示最大值

 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);
        }

【问题讨论】:

  • 你想要达到的目标是完全无法理解的。如果您尝试将字符串与未知对象进行比较,那么“最大值”是什么意思?你期望a["id"] 是什么?
  • 我有一个名为“id”的字段,数据类型为 int 我想在消息框中显示最大的数字@Federico Dipuma
  • "a" 是数据集中的数据行指针@Federico Dipuma
  • @AhmedKareem 你知道它是一个 int 但编译器没有。你需要投射它,例如(int)(a["id"])。 int > string 也没有任何意义,所以不清楚你在这里真正想要实现什么。 (考虑 “比 'hello' 大 14 吗?” - 这是一个 int > 字符串比较)
  • Mr @Luke Briggs 还有其他方法可以获取此字段中的 MAX 值吗?我可以从字符串或对象转换为 int

标签: c#


【解决方案1】:

如果id是数字类型,可以试试DataTable.Compute

int max = Convert.ToInt32( amDataSet.students.Compute("max(id)", "") );

或使用Enumerable.Max LINQ 扩展:

int max = amDataSet.students.Rows.Cast<DatRow>().Max(r => Convert.ToInt32(r["id"]));

【讨论】:

  • 非常感谢@Slai 解决问题
猜你喜欢
  • 1970-01-01
  • 2016-06-30
  • 2015-04-19
  • 1970-01-01
  • 2021-06-20
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 2021-03-04
相关资源
最近更新 更多