【问题标题】:Get the highest value from a given column in a datatable从数据表中的给定列中获取最大值
【发布时间】:2015-10-20 19:25:08
【问题描述】:

我有一个包含“待批准编号”列的数据表。我需要获得该列中的最高数字,以将其作为下一个可用数字显示给用户。我已经看到了一些如何做到这一点的例子,但我无法让它们工作。我知道我可以循环 DataTable 中的每个 DataRow 并检查值并存储它是否高于最后一个。但我知道必须有更好的方法。

以下是填充数据表的方式。

strSQL = "Select * from JobInvoice";
DataTable dtApprovalNumber = new DataTable();
MySqlDataAdapter daApprovalNumber = new MySqlDataAdapter(strSQL, conn);
daApprovalNumber.Fill(dtApprovalNumber);

欢迎更改 SQL 查询或将其从数据表中提取的代码。

编辑:在获得原始数字列的解决方案后,我发现我需要执行此操作的第二列是字符串。下面也提供了解决方案。

【问题讨论】:

    标签: c# mysql sql datatable


    【解决方案1】:

    如果您想在代码中而不是在 sql 中从 DataTable 中获取最高值,那么您可以使用 linq,如下所示:

    int highestNumber = dtApprovalNumber.AsEnumerable().Max(x => x.Field<int>("SomeIntegerColumn");
    

    编辑。

    根据您的评论 - 如果您想从包含数字的字符串列中计算最大值(不明白为什么),您可以使用类似的方法:

    int highestNumber = dtApprovalNumber.AsEnumerable().Max(x => int.Parse(x.Field<string>("SomeStringColumn")));
    

    请注意,如果这些字符串值中的任何一个不可转换,它将失败,那么您将不得不以其他方式进行。

    EDIT.2

    由于我刚刚尝试过,我将与您分享 - 当您有字符串 Column 并且您不确定它们是否都可以转换(例如有些可能是空的)时的情况。见下文:

    int tempVariable;
    int highestNumber = dt.AsEnumerable()
                .Where(x => int.TryParse(x.Field<string>("SomeColumn"), out tempVariable))
                .Max(m => int.Parse(m.Field<string>("SomeColumn")));
    

    【讨论】:

    • 适用于待批号。我还有一个字符串字段,其中包含我需要获得最高的数值。这适用于字符串字段吗?
    • 请在您的答案中保留原件 for int。
    • 在这里,请阅读“请注意”部分,如果您的情况可能出现这种情况 - 请告诉我,我会为您准备另一个版本。
    • 我知道。不知道为什么他们将字符串数字字段用于一个字段,将字符串用于另一个字段。但我无法控制数据库。
    • 完美。谢谢 MajkeloDev
    【解决方案2】:
    Select max(`Pending Approval Number`) from JobInvoice
    

    您可以执行 maxvalue + 1 以将其显示为下一个可用数字。

    【讨论】:

    • 这会只返回一个名为“Pending Approval Number”的高值列吗?
    • 问题被标记为mysql,所以[ ] 不起作用。此外,这将返回文字字符串'Pending Approval Number',而 mysql 需要反引号而不是单引号..
    • @dnoeth..thanks for pointing that out.modified it to replace '' with ``
    • 谢谢vkp。我将把它保存在我的 SQL 笔记中。
    猜你喜欢
    • 2011-02-07
    • 1970-01-01
    • 2012-08-21
    • 2018-04-15
    • 2020-11-28
    • 2014-01-16
    • 1970-01-01
    相关资源
    最近更新 更多