gpt4 book ai didi

c# - 根据条件从DataTable中选择行

转载 作者:太空宇宙 更新时间:2023-11-03 22:41:06 25 4
gpt4 key购买 nike

我正在尝试使用数据表选择,但我得到的数据不正确

 double marks = 5; 
DataRow[] result = dsGrades.Tables[0].Select("Convert(MarksFrom, 'System.Decimal') >=" + marks + " And " + marks + "<= Convert(MarksTo, 'System.Decimal') ");

dsGrades 包含以下数据, enter image description here

当“marks”包含“5.0”时,我期待 MarksFrom = 5.0 和 MarksTo = 5.9 的行,因为 5.0 落在这个范围内,但这里它返回 5 行。

数据表选择有什么问题?感谢您的帮助。

最佳答案

如果将您的 DataColumn 类型更改为 double 是有意义的,但是即使使用 decimal,您也不需要在表达式内部进行转换。

请注意,在您提供的示例中,您的约束似乎是倒退的。您指定要 MarksFrom 大于或等于 传入的数量,这不会返回您想要的范围内的一行。

这应该为传入的任何标记返回一行:

double marks = 5.0; 
DataRow[] result = dsGrades.Tables[0].Select($"{marks} >= MarksFrom AND {marks} <= MarksTo");

此外,由于您总是只期待一场比赛,因此您可以将其更改为:

DataRow match = table.Select($"{marks} >= MarksFrom AND {marks} <= MarksTo").SingleOrDefault();
如果返回多个结果,

SingleOrDefault 将抛出一个 InvalidOperationException,在这种情况下这可能是期望的结果。

关于c# - 根据条件从DataTable中选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52128491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com