/// <summary>
    ///  弹出对话框
    /// </summary>
    /// <param name="parentctr"></param>
    /// <param name="ControlPowerList"></param>
    public void FindControlInControls(Control parentctr, DataTable ControlPowerList)
    {
        foreach (Control ctr in parentctr.Controls)
        {
            if (CURRENTPERSON != "programmer" && System.Configuration.ConfigurationSettings.AppSettings["IsPower"] == "true")
            {
                var querylist = ControlPowerList.AsEnumerable().Where(info => info["CONTROLER_NAME"].ToString() == ctr.ID).Where(info => info["POWER_NAME"].ToString() == "控件不可见");
                if (querylist.Count() > 0)
                {
                    ctr.Visible = false;
                }
            }
            switch (ctr.GetType().ToString())
            {
                //为Button添加鼠标焦点变化事件
                case "System.Web.UI.WebControls.Button":
                    (ctr as Button).Attributes.Add("onmouseover", "this.className='Boutton_LightBlue1'");
                    (ctr as Button).Attributes.Add("onmouseout", "this.className='Boutton_LightBlue'");
                    break;                            }
            FindControlInControls(ctr, ControlPowerList);
        }
    }
之前没有接触过LINQ这段代码没怎么看懂,重点是var querylist = ControlPowerList.AsEnumerable().Where(info => info["CONTROLER_NAME"].ToString() == ctr.ID).Where(info => info["POWER_NAME"].ToString() == "控件不可见");没看懂,info,=>,ControlPowerList.AsEnumerable().Where这些怎么理解?

解决方案 »

  1.   

    1. => 查查MSDN的Lambda
    2. info就是个变量,同上查查Lambda
    3. AsEnumerable() 将DataTable转成可以进行Linq查询的对象上面的语句也可以写成:类似sql,能明白吧。info就是一条DataRowvar queryList = from info in ControlPowerList.AsEnumerable()
                    where info["CONTROLER_NAME"].ToString() == ctr.ID 
                       && info["POWER_NAME"].ToString() == "控件不可见"
                    select info;
      

  2.   

    var querylist = ControlPowerList.AsEnumerable().Where(info => info["CONTROLER_NAME"].ToString() == ctr.ID).Where(info => info["POWER_NAME"].ToString() 
    info:为一个变量(自定义变量)
    =>:lambda标识
    ControlPowerList.AsEnumerable().Where
    ControlPowerList:你传入的DataTable,AsEnumerable():把DataTable转换为AsEnumerable().
    .Where是查询的多个where里面的为条件.
    建议可以看看lambda表达式.看了在来看你代码一目了然。