datarow值与c#的比较

时间:2011-07-11 10:51:05

标签: c#

我有一个带有表的sql数据库,其中包含我的评分等级和评论,例如

debut        end        comment  
5  ----       10   --      x  
0  ----        4   ---     y

我已经设法用foreach循环遍历我的表行。

我想提供一个值,可能带有文本框控件,然后程序应检查我的gradingScale表中的值,并输出相应的注释

例如

int number;
number=4

comment=y;

4 个答案:

答案 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(数组)。