DataSet查询出来一些数据,如何对DataSet的数据进行一次相当于在查询的过虑操作
我DataSet查询出来一些数据,我现在想对DataSet的数据进行一次相当于在查询的操作,该怎么做?比如:这是DataSet中的数据
Name Sex Age
张 女 20
李 男 21
王 女 22
张1 女 20
李1 男 23
王1 女 22
我现在想做的比如模糊查询姓张的、年龄为20的、性别为男的,当然我只是举个例子,但是差不多就这个意思了。
--------------------编程问答-------------------- DataSet.Tables[0].Select("条件"); --------------------编程问答-------------------- DataSet.Tables[0].Select("条件");
------------------
条件如何写,举个例子? --------------------编程问答-------------------- up --------------------编程问答-------------------- DataSet.Tables[0].Select(" Age = 20");
--------------------编程问答-------------------- DataSet.Tables[0].Select(" Age = 20");
-----------
不行 --------------------编程问答-------------------- 怎么可能会不行.提示什么错误了
模糊查询
DataSet.Tables[0].Select("name like %'张'% "); --------------------编程问答-------------------- 查询后的是个DataRow[] --------------------编程问答-------------------- 查询后的是个DataRow[]
-----------
我还要他是 dataset 的啊 --------------------编程问答-------------------- datarow对象为引用传递,修改了DataRow也就相应的修改了DataSet.. --------------------编程问答-------------------- 为什么不在数据库中操作呢? --------------------编程问答-------------------- DataSet.Tables[0].Select("name like %'张'% and Age = 20");
--------------------编程问答-------------------- using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication3
{
public partial class Form1 : Form
{
private string m_genderTemp;
private System.Data.DataSet m_dataSetNew;
private System.Data.DataSet m_dataSetRaw;
public Form1()
{
InitializeComponent();
InitialRawDataSet();
GetNewDataSet();
}
/// <summary>
/// initial the raw data
/// </summary>
private void InitialRawDataSet()
{
m_dataSetNew = m_dataSetRaw.Copy();
for (int i = 0; i < 10; i++)
{
m_genderTemp = (i % 2 )> 0 ? "男" : "女";
DataRow dataRowTemp = m_dataSetRaw.Tables[0].NewRow();
dataRowTemp.ItemArray = new object[] { "王"+i, m_genderTemp,(new Random(i).Next()%80)};
m_dataSetRaw.Tables[0].Rows.Add(dataRowTemp);
m_dataGridViewRawData.DataSource = m_dataSetRaw.Tables[0];
}
}
/// <summary>
/// get the selected data
/// </summary>
private void GetNewDataSet()
{
string strFilter = "age > 60 or gender = '男'";
DataRow [] newDataRow = m_dataSetRaw.Tables[0].Select(strFilter);
foreach(DataRow tempRow in newDataRow)
{
m_dataSetNew.Tables[0].Rows.Add(tempRow.ItemArray);
}
m_dataGridViewNewData.DataSource = m_dataSetNew.Tables[0];
}
}
} --------------------编程问答-------------------- namespace WindowsApplication3
{
partial class Form1
{
private System.ComponentModel.IContainer components = null;
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows desinger generated code
private void InitializeComponent()
{
this.m_dataSetRaw = new System.Data.DataSet();
this.m_dataTable = new System.Data.DataTable();
this.m_name = new System.Data.DataColumn();
this.m_gender = new System.Data.DataColumn();
this.m_age = new System.Data.DataColumn();
this.m_dataGridViewRawData = new System.Windows.Forms.DataGridView();
this.m_dataGridViewNewData = new System.Windows.Forms.DataGridView();
((System.ComponentModel.ISupportInitialize)(this.m_dataSetRaw)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.m_dataTable)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.m_dataGridViewRawData)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.m_dataGridViewNewData)).BeginInit();
this.SuspendLayout();
//
// m_dataSetRaw
//
this.m_dataSetRaw.DataSetName = "DataSetTest";
this.m_dataSetRaw.Tables.AddRange(new System.Data.DataTable[] {
this.m_dataTable});
//
// m_dataTable
//
this.m_dataTable.Columns.AddRange(new System.Data.DataColumn[] {
this.m_name,
this.m_gender,
this.m_age});
this.m_dataTable.TableName = "m_tableName";
//
// m_name
//
this.m_name.ColumnName = "Name";
//
// m_gender
//
this.m_gender.ColumnName = "gender";
//
// m_age
//
this.m_age.ColumnName = "age";
this.m_age.DataType = typeof(int);
//
// m_dataGridViewRawData
//
this.m_dataGridViewRawData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.m_dataGridViewRawData.Location = new System.Drawing.Point(12, 34);
this.m_dataGridViewRawData.Name = "m_dataGridViewRawData";
this.m_dataGridViewRawData.RowTemplate.Height = 23;
this.m_dataGridViewRawData.Size = new System.Drawing.Size(347, 155);
this.m_dataGridViewRawData.TabIndex = 0;
//
// m_dataGridViewNewData
//
this.m_dataGridViewNewData.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.m_dataGridViewNewData.Location = new System.Drawing.Point(12, 209);
this.m_dataGridViewNewData.Name = "m_dataGridViewNewData";
this.m_dataGridViewNewData.RowTemplate.Height = 23;
this.m_dataGridViewNewData.Size = new System.Drawing.Size(347, 152);
this.m_dataGridViewNewData.TabIndex = 1;
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(371, 386);
this.Controls.Add(this.m_dataGridViewNewData);
this.Controls.Add(this.m_dataGridViewRawData);
this.Name = "Form1";
this.Text = "Form1";
((System.ComponentModel.ISupportInitialize)(this.m_dataSetRaw)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.m_dataTable)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.m_dataGridViewRawData)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.m_dataGridViewNewData)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Data.DataTable m_dataTable;
private System.Data.DataColumn m_name;
private System.Data.DataColumn m_gender;
private System.Data.DataColumn m_age;
private System.Windows.Forms.DataGridView m_dataGridViewRawData;
private System.Windows.Forms.DataGridView m_dataGridViewNewData;
}
}
--------------------编程问答-------------------- 楼上写了一堆蝌蚪文也有解决问题啊!呵呵!
一种就是Select方法,一种就是自己写个Foreach循环语句,处理一下。 --------------------编程问答-------------------- 用DataView
DataView dv = DataSet.Tables[0].DefaultView;
dv.RowFilter = "age=20";
DataGrid1.DataSource=dv;
DataGrid1.DataBind(); --------------------编程问答-------------------- DataView
值得注意的是:DataView只是一个视图,所以其过滤掉的数据只是不显示出来而已。因此,如果
认为当前的数据集只剩过滤出来的数据,然后企图用此数据源来更新原始数据库会出现问题。 --------------------编程问答-------------------- 使用DataView过滤 --------------------编程问答-------------------- ls正解 --------------------编程问答-------------------- 提一个方法,
private void bindData(string ls_where)
{
string sql = "select * from aaa where 1 =1";
OleDbCommand select = new OleDbCommand(sql + ls_where, myconnection)
//绑定....略
}
每次查询的时候重新绑定一下..带上where语句.. --------------------编程问答-------------------- DataSet.Table["表名"].Select("name like %'张'% AND Age = 20 AND Sex = 男" --------------------编程问答-------------------- mark --------------------编程问答-------------------- DataSet dsTemp = new DataSet();
dsTemp.Merge(DataSet.Table["表名"].Select("name like %'张'% AND Age = 20 AND Sex = 男"))
--------------------编程问答-------------------- 目的是先DataRow[]再并到DataSet --------------------编程问答-------------------- DataSet.Table["表名"].Select("name like %'张'% AND Age = 20 AND Sex = 男"
--------------------编程问答-------------------- 好东西 --------------------编程问答-------------------- DataView过滤DataView.RowFilter --------------------编程问答--------------------
这位大哥的正解, --------------------编程问答-------------------- 利用dateset表 筛选就可以了 --------------------编程问答-------------------- 学习。还没有用过dataset查询 --------------------编程问答-------------------- 干脆彻底的做法,将填充到dataset的sql语句加上where条件,再重新填充一次,虽是麻烦点,但觉得比较清爽彻底 --------------------编程问答-------------------- 直接一步出来不就得了
--------------------编程问答-------------------- 合理的做法是先将查询结果建立视图,在视图中再次查询。 --------------------编程问答--------------------
up
--------------------编程问答-------------------- dataSet.tables[0].select('條件')
直接查詢此方法的使用,MSDN上有 --------------------编程问答-------------------- DataSet.Table[ "表名 "].Select( "name like % '张 '% AND Age = 20 AND Sex = 男 ") --------------------编程问答-------------------- 楼上的都回答的很好,帮你顶下 --------------------编程问答--------------------
楼主的意思是,不去进行数据库交互,所以才想要直接通过DATASET来查询,否则就没必要了,而我想问一下:
如果我用的是GRIDVIEW而不是DATAVIEW的话15楼的绑定是否可用?如果不可用的话需要怎么做?
如果我想顺便更新数据的话该怎么做?如果可以的话写一个例子更合适
在下新手,大家多指教了
补充:.NET技术 , C#