C#程序中,现有Dataset ds 其中有数据如下:
序号 姓名 分数
1 张三 70
2 张三 80
3 李四 75
要想筛选出每个人最大分数的集合,应该在程序中怎么处理ds ,得到:1 张三 80
2 李四 75
序号 姓名 分数
1 张三 70
2 张三 80
3 李四 75
要想筛选出每个人最大分数的集合,应该在程序中怎么处理ds ,得到:1 张三 80
2 李四 75
首先把记录取出来放到DataTable 里面。
循环这个DataTable
每次都取第一行 里面的姓名信息
如果分数是数字类型的 就直接用
DataTable.Select("姓名='XXX'","分数DESC") 得到的DataRow 数组的第一个就是最大的分数。
然后把姓名为XXXDataRow 从DataTable 中删除 dataTb.Rows.Remove(row); dataTb.AcceptChanges();如果分数部署数字类型的。就要自己每行比较。得出最大的。
{
public int score;
public int number;
public string name;
} class Program
{
static void Main(string[] args)
{
List<MaxEntity> list=new List<MaxEntity>();
//首先把ds中的每个数据进行转换
//转换成这样会比较简单,当然数据可能不止三条
int[] score = new int[3] { 70, 80, 75 };
int[] number = new int[3] {1,2,3 };
string[] name = new string[3] {"张三","张三","李四" }; int tempMax=0;
int sign = 0; for (int i = 1; i < name.Length; i++)
{
if (name[i] == name[i - 1])
{
if (score[i] > tempMax)
{
tempMax = score[i];
sign = i;
}
}
//到达另一个object
if(name[i]!=name[i-1])
{
//添加前一个object
MaxEntity me = new MaxEntity();
me.name = name[sign];
me.number = number[sign];
me.score = score[sign];
list.Add(me); tempMax = score[i];
sign = i;
}
}
MaxEntity me1 = new MaxEntity();
me1.name = name[sign];
me1.number = number[sign];
me1.score = score[sign];
list.Add(me1);
//你需要的数据全部保存到list列表中,然后自己进行处理
Console.ReadLine();
} }这段代码敲得不是很好了!
顺便提下,原来的DataSet数据时查很多结构相同的表中的数据一行行填充进去的前面不好处理。。只能到这边处理了