CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  C#

如何在DATASET中查找满足条件的数据记录

楼主s198127(xyz)2005-05-13 14:57:21 在 .NET技术 / C# 提问

例如现在DATASET中有一DATATABLE其内容如下:  
  TABLE1  
  仓库号       存货       存量        
      1             摩托         20  
      2             坦克         20  
      3             航母         30  
      4             机甲         60  
      5             小狗         30  
      6             地刺         20  
   
  现在我希望查询存量为20的存货:  
  当然如果是在数据库中我可以直接  
  select   存货   from   TABLE1   where   存量   =   20;  
  但现在我的数据信息全部是存在DATASET中的与数据库完全无关  
   
  那位大哥能指点我一下该如何在DATASET中进行查询啊!  
  当然用FOR()循环逐条判断可以实现,但我希望各位能提供更好的解决方案!  
  解决立即送分  
   
  问题点数:100、回复次数:7Top

1 楼wmt85(深山老翁)回复于 2005-05-13 15:11:38 得分 35

DataSet   ds   =   new   DataSet();  
  DataView   dv   =   new   DataView();  
  dv   =   ds.Tables["TABLE1"].DefaultView;  
  dv.RowFilter   =   "存量=20";  
  dataGrid1.DataSource   =   dv;Top

2 楼lovefootball(蟑螂(生活就是扯淡--做人要放低姿态))回复于 2005-05-13 15:26:29 得分 35

参见msdn  
   
  获取或设置用于筛选在   DataView   中查看哪些行的表达式。  
  [Visual   Basic]  
  Public   Overridable   Property   RowFilter   As   String  
  [C#]  
  public   virtual   string   RowFilter   {get;   set;}  
  [C++]  
  public:   __property   virtual   String*   get_RowFilter();  
  public:   __property   virtual   void   set_RowFilter(String*);  
  [JScript]  
  public   function   get   RowFilter()   :   String;  
  public   function   set   RowFilter(String);  
  属性值  
  用于指定行的筛选方式的字符串。有关详细信息,请参见下面的备注。  
  备注  
  若要形成   RowFilter   值,请指定列的名称,后跟一个运算符和一个要筛选的值。该值必须用引号括起来。例如:  
  "LastName   =   'Smith'"  
  有关更多信息,请参见   DataColumn   类的   Expression   属性。  
  若要只返回那些具有空值的列,请使用以下表达式:  
  "Isnull(Col1,'Null   Column')   =   'Null   Column'"  
  示例  
  [Visual   Basic,   C#]   以下示例创建   DataView   并设置它的   RowFilter   属性。  
  [Visual   Basic]    
  Private   Sub   MakeDataView()  
        Dim   dv   As   DataView  
        dv   =   New   DataView  
        With   dv  
              .Table   =   DataSet1.Tables("Suppliers")  
              .AllowDelete   =   True  
              .AllowEdit   =   True  
              .AllowNew   =   True  
              .RowFilter   =   "City   =   'Berlin'"  
              .RowStateFilter   =   DataViewRowState.ModifiedCurrent  
              .Sort   =   "CompanyName   DESC"  
        End   With  
         
        '   Simple   bind   to   a   TextBox   control  
        Text1.DataBindings.Add("Text",   dv,   "CompanyName")  
  End   Sub  
  [C#]    
  private   void   MakeDataView()    
  {  
        DataView   dv   =   new   DataView();  
   
        dv.Table   =   DataSet1.Tables["Suppliers"];  
        dv.AllowDelete   =   true;  
        dv.AllowEdit   =   true;  
        dv.AllowNew   =   true;  
        dv.RowFilter   =   "City   =   'Berlin'";  
        dv.RowStateFilter   =   DataViewRowState.ModifiedCurrent;  
        dv.Sort   =   "CompanyName   DESC";  
         
        //   Simple   bind   to   a   TextBox   control  
        Text1.DataBindings.Add("Text",   dv,   "CompanyName");  
  }  
   
  用rowfilterTop

3 楼dutguoyi(新鲜鱼排)回复于 2005-05-13 15:34:15 得分 30

同意wmt85(深山老翁)的看法  
   
  dv.RowFilter   =   "存量=20";//过滤的条件  
  Top

4 楼s198127(xyz)回复于 2005-05-13 16:14:04 得分 0

感谢以上各位仁兄的方案!  
  不知道还有不有其他的解决方案  
  期待中....  
  不知道存不存在  
  .tables["tablename"].select("orderid=yourvalue");  
  类似的方案,希望能有朋友提供部分使用代码  
   
  分数结贴时送上Top

5 楼9653(抗日,从我做起,从小事做起)回复于 2005-05-13 16:37:32 得分 0

foreach(row   in   Dataset.table.rows)  
  {  
            if(row['存量']   ==   20)  
            {.....................}  
  }Top

6 楼dbspro(冷锋)回复于 2005-05-13 17:19:45 得分 0

MarkTop

7 楼EverBluesoft(everblue)回复于 2005-08-19 13:43:04 得分 0

private   void   SeekRecord()//查询记录  
  {  
  DataColumn[]   keys=new   DataColumn[1];  
  keys[0]=this.dsDataResult.Tables["S10CPDA"].Columns["S10BH"];  
  this.dsDataResult.Tables["S10CPDA"].PrimaryKey=keys;  
  seek=0;  
  while(seek<=this.dsDataResult.Tables["S10CPDA"].Rows.Count-1)  
   
  {  
  if(strSeek==this.dsDataResult.Tables["S10CPDA"].Rows[seek]["S10BH"].ToString())  
  {  
  break;  
   
  }  
   
  else  
  seek++;  
       
  }  
  if(seek>this.dsDataResult.Tables["S10CPDA"].Rows.Count-1)  
  {  
  MessageBox.Show("对不起,找不到你所要查询的记录");  
  this.tbrPrivor.Enabled=true;  
  this.tbrNext.Enabled=true;  
  this.tbrBack.Enabled=true;  
  this.tbrLast.Enabled=true;  
  }  
  else  
  {  
  this.BindingContext[this.dsDataResult,"S10CPDA"].Position=seek;  
   
   
  }  
   
  }Top

相关问题

  • 数据库的记录查找!!
  • dataset中如何查找数据?
  • 怎样在 DataSet 表中查询满足指定条件的记录呢???我想查找字段名称为a ,数据为b,怎样找呢???
  • 如何查找数据库中重复记录?
  • 数据表中记录的查找问题
  • 怎么实现向后查找数据库中记录?
  • 关于sql数据表查找相同记录的问题
  • 查找access数据库里带 * (星号) 记录数怎么找?
  • 查找access数据库里带 * (星号) 记录数怎么找?
  • 怎么查找数据库里最后一条记录?

关键词

  • c#
  • dv
  • 属性
  • 查询
  • 解决
  • virtual
  • rowfilter
  • s10cpda
  • dsdataresult
  • 存量

得分解答快速导航

  • 帖主:s198127
  • wmt85
  • lovefootball
  • dutguoyi

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo