zoukankan      html  css  js  c++  java
  • DataView筛选出最新的十条数据的方法总结;

    法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(有待研究)

    from m inMyTable
    take
    10
    select m

  • 相关阅读:
    IT常用英文术语解释发音
    大数据公司宣传语 公司文化企业文化
    vue 开发环境搭建,超级简单仅需3步。
    Mvc action间的传值
    获取文件路径
    WebStorm注册码
    webstrom快捷键
    Nuget-使用图形化界面打包自己的类库
    使用StyleCop进行代码审查
    InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)
  • 原文地址:https://www.cnblogs.com/lykbk/p/dataview10tsj.html
Copyright © 2011-2022 走看看