如何在DATASET中查找满足条件的数据记录
例如现在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




