各位好: 哪位大侠知道如何在已经填充的DataSet数据集中做进一步筛选?
虚拟表如下:
InBox:
id name sex
1 123 F
2 234 M
3 345 F 我想进行两次筛选,第一次淘汰sex='M'的。其余留在数据集InBox表中 第二次淘汰name 包含 '1'的。其余留在数据集InBox表中 最后理想结果应该是数据集InBox表中有一个记录,
3 345 F 哪位大侠知道数据集中的相应代码怎么写,
就像在数据集表中执行SQL(Select)那样的功能,
不吝赐教。。
虚拟表如下:
InBox:
id name sex
1 123 F
2 234 M
3 345 F 我想进行两次筛选,第一次淘汰sex='M'的。其余留在数据集InBox表中 第二次淘汰name 包含 '1'的。其余留在数据集InBox表中 最后理想结果应该是数据集InBox表中有一个记录,
3 345 F 哪位大侠知道数据集中的相应代码怎么写,
就像在数据集表中执行SQL(Select)那样的功能,
不吝赐教。。
DataTable clone1 = dt.Clone();
foreach(DataRow dr in selected)
{
clone1.Rows.Add(dr.ItemArray);
}
selected = clone1.Select("name not like '%1%'");
DataTable clone2 = dt.Clone();
foreach (DataRow dr in selected)
{
clone2.Rows.Add(dr.ItemArray);
}
foreach(DataRow dr in clone2.Rows)
{
Console.WriteLine(dr["name"]);
}
DataTable newDt = new DataTable();
for(int i=0; i<dt.Rows.Count; i++)
{
string gender = dr["Sex"].ToString();
string name = dr["Name"].ToString();
if(!(gender.Upper().Equals("M")) && !(name.IndexOf("1")>0))
{
DataRow ddr = newDt.NewRow();
ddr = dr.Clone();
newDt.Add(ddr);
}
}
//sorry,没改全
DataTable newDt = new DataTable();
foreach(DataRow dr in dt.Rows)
{
string gender = dr["Sex"].ToString();
string name = dr["Name"].ToString();
if(!(gender.Upper().Equals("M")) && (name.IndexOf("1")==-1))
{
DataRow ddr = newDt.NewRow();
ddr = dr.Clone();
newDt.Add(ddr);
}
}
DataView dv=new DataView(InBox);
dv.RowFilter="sex<>'M' and name not LIKE '%1%'"
DataView dv1=InBox.Table[0].DefaultView();
dv1.RowFilter="sex!='M' and name not like '%1%'";
下面就继续使用 dv1做数据源 就可以了
是不是第一筛选掉的记录集只是隐藏起来而已,并没有真正的筛除,所以导致第二次的筛选还是建立在记录集A上。
呵呵~~~请教请教,我真的很不懂,请问有什么解决办法啊?