在DataSet中的列存储结果中选择查询计数特定值

时间:2013-03-02 02:29:24

标签: c# asp.net sql sql-server

我弄明白,我的答案在本节的底部。

任何帮助都会很棒谢谢。

我有一个名为Rank的列表,可以保存1-5的值

我要做的是将Data Back存储到数据集中以便稍后显示

例如

Rank
_____

4
3
5
4
2

我现在的SQL查询。

select rank, COUNT(*) as rankCount from Result group by rank

我想显示

五级= 1

四级= 2

三级= 1

两级= 1

一个等级= 0

myDataSet.Table[0].Rows[0].Field<int>("rank"); ??

不确定如何做到这一点任何帮助都会非常感谢你。

相同的查询

select rank, COUNT(*) as rankCount from Result group by rank

myDataTable = MyDataSet.Table[0];

string rank5 = string.Empty;

Foreach(DataRow row in myDataTable.Rows){

       if(row["rank"].ToString() == "5"){
         rank5 - row["rankCount"].ToString();
    }

}

2 个答案:

答案 0 :(得分:0)

public class RankGroup
{
    public int Rank { get; set; }
    public int RankCount { get; set; }

    public override string ToString()
    {
        return string.Format("Rank Number: {0} Rank Number Count: {1}", Rank, RankCount);
    }
}

var rankGroups = myDataSet.Table[0].Rows.Cast<Row>().Select(r =>
                                    new RankGroup
                                    {
                                        Rank = r.Field<int>("rank"),
                                        RankCount = r.Field<int>("rankCount")
                                    }

foreach(var rankGroup in rankGroups)
{
    Console.WriteLine(rank);
}

答案 1 :(得分:0)

这种事情在数据库中更适合(和更快)。所以我会这样做:

(我有一张包含相似数据的表,所以我的&#34; targetType&#34;相当于你的&#34; rank&#34;。)

select targetType,
case targetType
when 1 then 'One'
when 2 then 'Two'
when 3 then 'Three'
when 4 then 'Four'
when 5 then 'Five'
else '' end + ' Rank' as Description,
count(1) [Count]
from Logs
where targetType between 1 and 5
group by targetType
order by 1


targetType  Description Count
1            One Rank    264
2            Two Rank    248
3            Three Rank  692
4            Four Rank   441