刚学C#,怎么感觉对数据的处理很弱智?
比如说对Datatable有条件的批量修改某列数据VFP可以Replace ... for,
C#只能循环判断,逐项修改,1万条记录怎么办?
有没有快捷点的办法? --------------------编程问答-------------------- c#也可以用SQL语句成批修改嘛。 --------------------编程问答-------------------- dataset linq --------------------编程问答-------------------- 那你为什么不用sql批量更新,非得跟datatable较劲呢 --------------------编程问答-------------------- 刚学C#的话,弱智的肯定是你,而不是C#.net --------------------编程问答-------------------- --------------------编程问答-------------------- 各位大神,请问一下,,,replace for 通过神马 实现批量更新? 那么C# 也这么做呗 --------------------编程问答-------------------- sql支持批量更新。
update sometable set field = field + 1 where name = xxx --------------------编程问答-------------------- 这个。。。。纯粹是领取十分可用分来的 --------------------编程问答-------------------- 大侠们帮看看,最底下一个循环,想不用循环实现:
--------------------编程问答-------------------- 权限好低哦,发帖不能编辑修改
//删除没有设置字段名的列
for (int i = 0; i < xlshead.Rows.Count; i++)
{
if (xlshead.Rows[i]["fld"].ToString() == string.Empty)
xlsdt.Columns.Remove(xlshead.Rows[i]["head"].ToString());
//删除不符合非空要求的记录
//xlsdt= from xlsdt where
//delete xlshead set field = field + 1 where name = xxx
if (xlshead.Rows[i]["nonull"].ToString().ToLower()=="true")
{
//string fld=xlshead.Rows[i]["fld"].ToString();
//DataRow[] rows = xlsdt.Select(fld+" is not null");
//xlsdt.Clear();
//以下一定要用循环码?想用上面3+...代替,但我写不下去了,仍然需要遍历rows
for (int j = xlsdt.Rows.Count - 1; j >= 0; j--)
{
if (xlsdt.Rows[j].IsNull(i))
{
xlsdt.Rows.RemoveAt(j);
}
}
}
for (int i = 0; i < xlshead.Rows.Count; i++)--------------------编程问答-------------------- 对啊,这个不是C#慢,是思路不对,应该用SQL语句 --------------------编程问答-------------------- 有时候要是通过c#去实现需要写很多很多代码 但是同样的功能 一条sql语句足以。。。 --------------------编程问答-------------------- 弱智不弱智,结果说了算。
{
if (xlshead.Rows[i]["fld"].ToString() == string.Empty)
xlsdt.Columns.Remove(xlshead.Rows[i]["head"].ToString());
//删除不符合非空要求的记录
if (xlshead.Rows[i]["nonull"].ToString().ToLower()=="true")
{
//string fld=xlshead.Rows[i]["fld"].ToString();
//DataRow[] rows = xlsdt.Select(fld+" is not null");
//xlsdt.Clear();
//以下一定要用循环码?想用上面3行+...代替,但我写不下去了,仍然需要遍历rows
for (int j = xlsdt.Rows.Count - 1; j >= 0; j--)
{
if (xlsdt.Rows[j].IsNull(i))
{
xlsdt.Rows.RemoveAt(j);
}
}
}
你应该去找vpf做软件的公司,而不要找使用.net的。 --------------------编程问答-------------------- 请你回去用VPF
大户你好,大户再见 --------------------编程问答-------------------- SQL只能对数据库操作,我现在只是对一个待处理的DataTable操作
LinQ虽然可以对DataTable处理,但只有DataTable.Select(),而且其结果还是Rows数组,没有直接批处理删除或修改的处理
上面我帖的代码主要目的是:有条件快速删除DataTable中的一些记录,保持剩余的数据还在一个DataTable中。
方案1.没有DataTable.Delete(),只有DataTable.Select(),而出来的结果不能直接转入新的DataTable,好像必须遍历,数据量大势必很慢
方案2.现有DataTable.Rows.Remove(),还是只能逐条删,照样慢
SQL语句如果能直接操作DataTable并立马生成新DataTable就好了。进一步能对多个关联DataTable筛选、汇总、合并等等,然后产生新的DataTable就基本满足啦。
刚学C#,感觉数据处理方面很不习惯。我的理解是DataSet,DataTable之类都是临时数据容器,用于程序处理,在有需要反写数据库时再一次性提交给后台数据库。然而感觉这些“临时数据容器”很不方便,N多时候必须遍历。
希望老手们指点,如何随心所欲的高效处理“临时”数据。
--------------------编程问答-------------------- 放开 dataTable 与 dataSet 这类东东,( 这只是存在 内存里的东东!)
直接用TSQL 语句,
--------------------编程问答-------------------- dataTable 与 dataSet
只是在读取数才用到,更新数据谁会用? --------------------编程问答--------------------
比如我从Excel中取得一个数据表,从SqLServer中获得另一个表,这两个表只是程序处理的一些数据源,我总得把它们放在DataTable中吧。
我要对这两个数据表进行加工处理,然后得到我想要的结果表,最后写入SQLServer的另一个表。
那么在我进行加工处理的时候,当然要用到删除、修改、汇总等等处理,目前我就觉得这些处理不方便啊,老有人说放开DataTable,用SQL,我做这些“内存”处理的时候怎么放开它们?
换句话说,数据从存储介质读入内存后,就是为了进行加工,加工好了再写入存储介质。现在我的问题是加工不方便。我理解楼上几位是要我别加工。
补充:.NET技术 , C#