日期:2014-05-17  浏览次数:20909 次

DataTable转换成string[]形式
C# code
for (int i = 0; i < dt1.Rows.Count; i++)
            {
                sa = (string[])ArrayList.Adapter((Array)dt1.Rows[i]["ModuleID"]).ToArray(typeof(string));
                string s2 = "select * from ws_system where M_ParentID = " + sa[i] + "";
                
            }

大概意思是这个意思,就是把dt1.Rows[i]["ModuleID"]赋值给string数组sa,然后查询。但是这样写是不行的,在循环外调用不了。求一个可用的方法

------解决方案--------------------
dt1.Rows[i]["ModuleID"]好像只是一个值吧,你为什么用数组接收,还ToArray。你直接用string类型的sa接收,tostring()不就得了,下面直接写+sa+
------解决方案--------------------
探讨

C# code
string sql2 = "select * from ws_system where M_ParentID in (select ModuleID from ws_system where M_PageCode in (select Pagecode from ws_RolePermission where roleid=(select Power from ws_User……

------解决方案--------------------
从你的查询语句可以看出,你完全是个SQL外行,就连多表关联查询都不会写,你这里只要一条SQL语句就可以搞定的,你却要分多次查询嵌套,我都不想看你的那个C#代码了,你的问题应该从SQL语句的地方找起,改写SQL,一步执行到位,提高效率。
------解决方案--------------------
懒得看 sql 正不正确了

DataTable 转换成 String[] 可以这样

C# code
string[] ary = Array.ConvertAll<DataRow,string>(datatable.Rows, r=>r["ModuleID"].ToString());

------解决方案--------------------
菜单的数据不会很多,可以一次性读取完到内存,再组合成树
------解决方案--------------------
探讨
C# code


public DataTable Module_SelectByID( Userl c)
{
string sql2 = "select ModuleID from ws_system where M_PageCode in (select " + "Pagecode from ws_RolePermission where roleid=(select ……