DataView筛选出最新的十条数据的方法总结;

摘要:
法1:第一种方法可以采用复制一个Datatable然后循环需要筛选的DataTable,循环出最新的十条,添加到复制的DataTable中。

法1:

第一种方法可以采用复制一个Datatable然后循环需要筛选的DataTable,循环出最新的十条,添加到复制的DataTable中。

DataTable dt = ETMSoft.Cache.ETMCache.GetCacheService().RetrieveObject("/news/newscache") as DataTable;
// if (dt == null)
// {
// DataTable Newsdt = GetAllNews();
// CacheManage.NewsCache(Newsdt);
// DataView NewView = new DataView(Newsdt);
// NewView.RowFilter = "Menu_Pk='" + IntClass + "'";
// NewView.Sort = " News_Time desc ";
//Newsdt = NewView.ToTable();
// DataTable dtv = new DataTable();
// dtv = Newsdt.Clone(); //复制一个dataTable
// for (int i = 0; i < Newsdt.Rows.Count&&i<10; i++)
// {
// DataRow dr = Newsdt.Rows[i];
// dtv.Rows.Add(dr.ItemArray); //此处通过一个数组来添加和设置行的所有值.
// }
// return dtv;
// }
// else
// {
// DataView view = new DataView(dt);
// view.RowFilter = "Menu_Pk='" + IntClass + "'";
// view.Sort = " News_Time desc ";
// dt = view.ToTable();
//DataTable dtv = new DataTable();
// dtv = dt.Clone(); //复制一个dataTable
// for (int i = 0; i < dt.Rows.Count&&i<10; i++)
// {
// DataRow dr = dt.Rows[i];
// dtv.Rows.Add(dr.ItemArray);
// }

// return dtv;

法2:上面第一种方法虽然可以用DataView实现刷选出最新的十条,但是由于需要复制一个DataTable并且还需要循环添加到另一个DataTable中,第一种方法并不理想,本来就是想利用缓存提高网站的性能,所以一直都想找到另外一种相对性能上比较的方法,原来的查阅了很多资料也没找到,后来无意之间想到了一种很简单的方法,提供给大家分享:

///////////////就是利用DataView.RowFilter筛选条件当数据超过十条的时候,按时间降序排列,只要用新闻发布时间大于第十条的新闻发布时间,DataView就可以筛选出最新的十条(这个方法简单吧!)

public DataTable NoticePhotoNews(int IntClass) ///////////////////////////////////////////////查询出数据创建缓存的时候按新闻发布时间降序,DataView筛选的的时候没必要再按时间降序排列一遍,这样可以提高性能
{
int s = 10;
DataTable dt = ETMSoft.Cache.ETMCache.GetCacheService().RetrieveObject("/news/newscache") as DataTable;
if (dt == null)
{
DataTable Newsdt = GetAllNews();
CacheManage.NewsCache(Newsdt);
DataView NewView = new DataView(Newsdt);
NewView.RowFilter = "Menu_Pk='" + IntClass + "'";
if (NewView.Count >= 10)
{
NewView.RowFilter = "News_Time > '" + NewView[10]["News_Time"].ToString() + "'";
}
Newsdt = NewView.ToTable();
return Newsdt;
}
else
{
DataView view = new DataView(dt);
view.RowFilter = "Menu_Pk='" + IntClass + "'";
if (view.Count >= 10)
{
view.RowFilter = "News_Time > '" + view[10]["News_Time"].ToString() + "'";
}
dt = view.ToTable();
return dt;
}
}

三、法三:可以用dt.Select()方法筛选出最新的十条代码如下:

public DataTable NoticePhotoNews(int IntClass) ///////////////////////////////////////////////查询出数据创建缓存的时候按新闻发布时间降序,DataView筛选的的时候没必要再按时间降序排列一遍,这样可以提高性能
{
int s = 10;
DataTable dt = ETMSoft.Cache.ETMCache.GetCacheService().RetrieveObject("/news/newscache") as DataTable;
if (dt == null)
{
DataTable Newsdt = GetAllNews();
CacheManage.NewsCache(Newsdt);
DataView NewView = new DataView(Newsdt);
NewView.RowFilter = "Menu_Pk='" + IntClass + "'";
//if (NewView.Count >= 10)
//{
// NewView.RowFilter = "News_Time > '" + NewView[10]["News_Time"].ToString() + "'";
//}
Newsdt = NewView.ToTable();
if (Newsdt.Rows.Count >= 10)
{
Newsdt.Select("News_Time > '" + NewView[10]["News_Time"].ToString() + "'");
}
return Newsdt;
}
else
{
DataView view = new DataView(dt);
view.RowFilter = "Menu_Pk='" + IntClass + "'";
//if (view.Count >= 10)
//{
// view.RowFilter = "News_Time > '" + view[10]["News_Time"].ToString() + "'";
//}
dt = view.ToTable();
if (dt.Rows.Count >= 10)
{
dt.Select("News_Time > '" + view[10]["News_Time"].ToString() + "'");
}
return dt;
}
}

四、法四:如果.net版本是3.5以上可以采用ling查询DataSet(有待研究)

fromm inMyTable
take
10selectm

免责声明:文章转载自《DataView筛选出最新的十条数据的方法总结;》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇webapi获取请求地址的IP20个你可能不知道的 Linux 网络工具下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

springsession生成sessionid不一致问题解决

毫无疑问,我遇到的主要问题是两个不同版本的spring boot,需要共享sessionid。...

C#使用FFmpeg的总结

上一篇文章提到FFmpeg解决了项目中的视频和语音问题,并表示C#和FFmpeg必须提到两个类库。最后,选择了FFmpeg.AutoGen,它可以通过API更好地控制灵活性,更好地满足您的个人需求。6、 C#FFmpeg使用SDL2实现rtmp播放器7。C#FFmpeg本地mp3,mp4文件播放8。C#FFmpeg在保存到本地文件时播放rtmp视频。...

【转】QImage 图像格式小结

构造图像:,QImagemyImage1=QImage;根据文件名打开图像。如果图像本身是32位或24位,则程序中的图像是32位。如果图像本身是8位或1位,则程序中的对应图像是8位或者1位。宽度表示图像宽度,高度表示图像高度。...

IIS 中 "另一个程序正在使用此文件,进程无法访问!"

然而,自从昨晚重新启动机器后,发现iis无法启动。手动启动并提示:“另一个程序正在使用此文件,进程无法访问它!”百度得知这是由港口冲突造成的。什么软件使用端口80?同时,我更改了iis的默认端口80,没问题。接下来,我想知道是哪一方秘密占用了端口80。但是,在执行上述命令后,我没有找到占用端口80的程序。我惊讶地发现没有人占用端口80。...

SAP OBA1 外币评估是基于财务目的,为了不影响报表而做的估算值,在月末进行评估,在下月初进行冲回。

评估报告按行项目显示结果。4.评估策略外币的未清项评估有三种策略:1)期末评估,下期初冲回。因此目前每年底改变外币汇率时进行外币余额和未清项的评估,不冲回。②资产负债表指定日,一般是一年的最后一天。③资产负债表准备评估。如果选择该项,则视为年结评估,不能产生冲销凭证。外币未清项评估是按借贷分别统计后做的调整凭证。...

基于智能网卡(Smart Nic)的Open vSwitch卸载方案简介

SmartNic技术的初衷是以比普通CPU低得多的成本支持各种虚拟化功能,如sriov、overlay/decap和卸载一些vSwitch处理逻辑。目前,业界还没有完美的SmartNic解决方案来解决传统的vSwitch性能瓶颈,每种解决方案的实施方式也各不相同。没有统一的解决方案。图1.不同SmartNic架构的比较。2.基于SmartNic的OVS卸载方...