我有一个带有表的sql数据库,其中包含我的评分等级和评论,例如
debut end comment
5 ---- 10 -- x
0 ---- 4 --- y
我已经设法用foreach循环遍历我的表行。
我想提供一个值,可能带有文本框控件,然后程序应检查我的gradingScale
表中的值,并输出相应的注释
例如
int number;
number=4
comment=y;
答案 0 :(得分:0)
不确定您在寻找什么 - 而且您没有提及您正在使用的数据库 - 所以我在这里猜测您可能正在寻找类似这样的内容:< / p>
DECLARE @Number INT
SET @Number = 4
SELECT comment
FROM dbo.gradingScale
WHERE @Number BETWEEN debut AND end
当然,您也可以将其包装在存储过程中(如果您的数据库支持):
CREATE PROCEDURE dbo.GetComment (@Number INT)
AS
SELECT comment
FROM dbo.gradingScale
WHERE @Number BETWEEN debut AND end
这些代码示例适用于Microsoft SQL Server 2005及更高版本(T-SQL)。
答案 1 :(得分:0)
很难弄清楚你想要什么,但这是一个示例实现(你没有说你的Sql结果是如何或以什么形式返回的,所以我提供了一个DTO / List实现:
static void SO6648999()
{
List<test> sample = new List<test>
{
new test { debut = 0,
end = 4,
comment = "y"},
new test { debut = 5,
end = 10,
comment = "x"}
};
int number = 4;
string comment = sample.Single(x => number >= x.debut && number <= x.end).comment;
}
class test
{
public int debut;
public int end;
public string comment;
}
答案 2 :(得分:0)
如果我理解正确,您的数据库列表范围,每个都与注释相关联。在您的示例中,0到4映射到x,而5到10映射到y。
在这种情况下,假设您的范围不重叠,一个非常简单的方法是通过升序debut
对表进行排序,然后遍历行,直到找到一个开始为{{1你的价值。
答案 3 :(得分:-2)
我相信你指的是DataTable
您可以使用DataTable
上的选择,并通过提供表达式过滤掉记录。它的工作方式类似于Sql中的where子句。
dt1.Select("end = 4")// assuming column holding int value
end是您要搜索的值的列名,这将返回满足条件的datarow
(数组)。