关于DataTable.Select不到数据的一种解决方案
网上有很多说的,试过,都没用。自己研究了一下,解决方案如下:
建立dataview,用dv.rowfilter,就可以取到了,然后TOTABLE即可。
代码如下:(只看中间那几句即可)
private void CreatTable(DataSet dsAll)
{
DataTable dtXH = new DataTable();
dtXH.Columns.AddRange(new DataColumn[] { new DataColumn("xh_id", typeof(System.String)), new DataColumn("a", typeof(System.String)) });
DataTable dtGfr = new DataTable();
dtGfr.Columns.AddRange(new DataColumn[] { new DataColumn("xh_id", typeof(System.String)), new DataColumn("gfr", typeof(System.String)), new DataColumn("gfrsbh", typeof(System.String)) }); if (dsAll.Tables.Count > )
{
DataTable dtitem = dsAll.Tables["item"];
DataRow[] dritems = dtitem.Select("xh_id<>''");
foreach (DataRow dr in dritems)
{
DataRow drXH = dtXH.NewRow();
drXH["xh_id"] = dr["xh_id"];
drXH["a"] = dr["a"];
dtXH.Rows.Add(drXH);
}
DataTable dtChild = dsAll.Tables["aChild"];
//解决方案:建立dataview,用dv.rowfilter,就可以取到了
DataView dv = dtitem.DefaultView;
foreach (DataRow dr in dtChild.Rows)
{
int itemid = Int32.Parse(dr["item_id"].ToString());
int aChildid = Int32.Parse(dr["aChild_id"].ToString());
string xh_id = ""; dv.RowFilter = string.Format("item_Id = {0}", itemid);
DataTable dttt = dv.ToTable();
//这么是查不到的
//DataRow[] drxhid = dtitem.Select(dv.RowFilter);
//if (drxhid.Length > 0)
//{
// xh_id = ((DataRow)drxhid[0])["xh_id"].ToString();
//}
if (dttt.Rows.Count > )
{
xh_id = dttt.Rows[]["xh_id"].ToString();
}
DataRow[] drChilds = dtitem.Select("aChild_id='" + aChildid + "'");
foreach (DataRow drChild in drChilds)
{
DataRow drgfr = dtGfr.NewRow();
drgfr["xh_id"] = xh_id;
drgfr["gfr"] = drChild["gfr"].ToString();
drgfr["gfrsbh"] = drChild["gfrsbh"].ToString();
dtGfr.Rows.Add(drgfr);
}
}
}
}
希望对大家有所帮助!
关于DataTable.Select不到数据的一种解决方案的更多相关文章
- DataTable.Select筛选过滤数据返回DataRow[]转为DataTable添加到DataSet
问题还原,如图所示,我们要筛选所有SHDP 为北京翠微KR的数据. 1. 筛选DataTable微软为我们提供了一个方法DataTable.Select(),其用法如下: 1) Select()—— ...
- neo4j批量导入数据的两种解决方案
neo4j批量导入数据有两种方法,第一种是使用cypher语法中的LOAD CSV,第二种是使用neo4j自带的工具neo4j-admin import. LOAD CSV 导入的文件必须是csv文件 ...
- MyBatis模糊查询不报错但查不出数据的一种解决方案
今天在用MyBatis写一个模糊查询的时候,程序没有报错,但查不出来数据,随即做了一个测试,部分代码如下: @Test public void findByNameTest() throws IOEx ...
- C# DataTable.Select() 筛选数据
有时候我们需要对数据表进行筛选,微软为我们封装了一个公共方法, DataTable.Select(),其用法如下: Select() Select(string filterExpression) S ...
- SELECT INTO和INSERT INTO SELECT的区别 类似aaa?a=1&b=2&c=3&d=4,如何将问号以后的数据变为键值对 C# 获取一定区间的随即数 0、1两个值除随机数以外的取值方法(0、1两个值被取值的概率相等) C# MD5 加密,解密 C#中DataTable删除多条数据
SELECT INTO和INSERT INTO SELECT的区别 数据库中的数据复制备份 SELECT INTO: 形式: SELECT value1,value2,value3 INTO Ta ...
- SQL Server游标 C# DataTable.Select() 筛选数据 什么是SQL游标? SQL Server数据类型转换方法 LinQ是什么? SQL Server 分页方法汇总
SQL Server游标 转载自:http://www.cnblogs.com/knowledgesea/p/3699851.html. 什么是游标 结果集,结果集就是select查询之后返回的所 ...
- Datatable的查找和排序(Datatable.Select)
Datatable 是一种常用的数据结构.数据类型有点类似于数据库中的表结构.在没有使用优秀的orm框架前,大部分的数据库的数据都是先变为Datatable 然后再通过代码转换变成 object. ...
- 在DataTable中执行DataTable.Select("条件")返回DataTable;
转:http://blog.csdn.net/hcf_force/article/details/7779062 1.在DataTable中执行DataTable.Select("条件&qu ...
- 去除DataTable重复数据的三种方法
业务需求 最近做一个把源数据库的数据批次导出到目标数据库.源数据库是采集程序采集而来的原始数据库,所以需要对其进行一些处理(过滤一些为空,长度太短或太长,非法字符,重复数据)然后在进行入库. 其中要避 ...
随机推荐
- DRM Study
1.DRM是什么? DRM,英文全称Digital Rights Management, 可以翻译为:数字版权管理.指的是出版者用来控制被保护对象的使用权的一些技术,这些技术保护的有数字化内容(例如: ...
- Selenium遇到问题unknown error:cannot create default profile directory......
1.selenium遇到问题unknown error:cannot create default profile directory...... 2.解决方案 问题1:把驱动放入C:\Windows ...
- 获取http和ftp地址的图片
根据http和ftp图片地址获取对应图片的缩略图和原图 public class GetBitmapImageClass { public BitmapSource GetImageHttp(stri ...
- WPF 如何加载图片
Uri ri = new Uri(AppDomain.CurrentDomain.BaseDirectory + "Resources/exp.jpg"); ImageSource ...
- 表格隔行变色_jQuery控制实现鼠标悬停高亮
<!doctype html> <html> <head> <meta http-equiv="content-type" content ...
- max os取消开机启动
原文:http://liuzhichao.com/p/1667.html 安装MAMP后,启动服务时提示Apache启动失败,80端口被占用.查看进程发现存在几个httpd. OS X自带Apache ...
- python基础----再看property、描述符(__get__,__set__,__delete__)
一.再看property 一个静态属性property ...
- Linux 进程的 Uninterruptible sleep(D) 状态
首先,说一下产生D状态的原因. 上图阐释了一个进程运行的情况,首先,运行的时候,进程会向内核请求一些服务,内核就会将程序挂起进程,并将进程放到parked队列,通常这些进程只会在parked队列中停留 ...
- UESTC--1655
原题链接:http://acm.uestc.edu.cn/problem.php?pid=1655 分析:注意可能会反向. #include<iostream> #include<c ...
- 省选模拟赛 LYK loves string(string)
题目描述 LYK喜欢字符串,它认为一个长度为n的字符串一定会有n*(n+1)/2个子串,但是这些子串是不一定全部都不同的,也就是说,不相同的子串可能没有那么多个.LYK认为,两个字符串不同当且仅当它们 ...