Code
//构造一个DataView对象,传递死个函数
DataView dv=new DataView(dt,"country='Germany'","country",DataViewRowState.CurrentRows);
第一个参数:DataTable,第二个:对DataTable内容进行筛选的筛选器,
第三个是排序列,最后一个参数是指定要在视图中包含的行的类型.
System.Data.DataViewRowState是一个枚举类型:
Added----新行
CurrentRows----当前行,包含未修改的,修改的,新的
Deleted--被删除的行
ModifiedOriginal--已修改过的原来的版本
ModifiedCurrent--被修改过的当前版本
None-- 没有行
OriginamRows--原来的行。包括为修改的和删除的行
unchanged--为修改的行
foreach (DataRowView drv in dv)
{
for (int i = 0; i < dv.Table.Columns.Count; i++)
{
Console.Write(drv[i]+""t");
} Console.WriteLine();
}
//////////////////////////
DataRow--DataTable中的一行
DataViewRow--DataView中的单行
//DataView是DataTable内容的动态表示,与Sql视图一样,它不保存数据!
DataView是建立在DataTable基础上的,DataView.Table 属性可以得到此DataView对应的那个DataTable。
DataView的行叫DataRowView,
可以从DataRowView直接通过 DataRowView.Row 属性得到此DataRowView对应的DataRow
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
SqlConnection conn = new SqlConnection("Server=zhuobin;uid=sa;pwd=zhuobin;database=Northwind");
string sql = @"select contactname,country from customers";
try
{
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = new SqlCommand(sql,conn);
//create the dataset and fill it
DataSet ds = new DataSet();
da.Fill(ds,"customers");
//get the data from the datatable
DataTable dt = ds.Tables["customers"];
//create the dataView
DataView dv = new DataView(dt,"country='Germany'","country",DataViewRowState.CurrentRows);
//display the data from data view
foreach (DataRowView drv in dv)
{
for (int i = 0; i < dv.Table.Columns.Count; i++)
{
Console.Write(drv[i]+"\t");
} Console.WriteLine();
}
}
catch (SqlException ex)
{
Console.WriteLine("The error:{0}", ex.Message);
}
finally
{
conn.Close();
}
Console.ReadLine();
}
}
}