黄忠成

風雪之閣 - i live,so i writing

code6421ID:Code6421
140212次访问,排名501好友0人,关注者18
Code6421的文章
原创 93 篇
翻译 0 篇
转载 0 篇
评论 203 篇
Code6421的公告
關於我:

黃忠成

  • 資深.NET 技術顧問
  • Run! PC 雜誌專欄作者
  • 程序員雜誌文章作者
  • PC Magazine 雜誌專欄作者
  • MSDN 專欄作者
  • MSDN 特約專屬講師
  • Microsoft .NET專屬講師
  • 台積電(TSMC) Visual Studio(VB.NET) 講師 ( 5/12 ~ 5/19)
  • 台灣微軟最有價值專家(MVP 2008)


  • 批評,指教,鼓勵, 請 寫信給我
    轉載文章請使用連結模式,
    請勿整篇Copy! 謝謝!


    我所提供的教育訓練:

    Windows Forms
    ASP.NET 2.0
    如有課程需要,請與我聯絡!

  • 我的著作:

  • 最近评论
    Longer:請問如何在自訂控制項中,動態繪製一張圖(如驗證碼圖),並輸出<img>至aspx檔案中?
    也就是在開發時,拉進這個驗證碼控制項,即會產生驗證碼圖形。(Design階段暫不考慮)
    而不需要再另建<img src='產生圖形的aspx or ashx等檔案'>的tag 及 輸出圖形的檔案。
    試著override int CreateChild……
    manymouths:真的很好
    yuanlmebanswers:写得不错。Part2、3、4要结合ObjectBuilder源代码,反复看才能真正理解。如果说ObjectBuilder是一个宝藏,那么文章就是藏宝图。
    Ken:您写得太好了,这段时间一直在寻找自己的定位,希望在8年后成为IT行业内某个领域内的顾问。看了一些描写关于顾问的文章,都写得很表面。您写得很具体,很有启发性。不过,我是大陆的读者,看繁体有一点费尽。呵呵!
    wangzepen:http://www.zzGps.cn 在线技术视频

    http://www.ZzGps.Cn/bbs/index.asp 技术视频下载

    技术视频提供,分类清晰,技术覆盖面广,几千视频助您轻松学习
    文章分类
    收藏
      相册
      风雪之阁
      朋友
      LOLOTA
      Moli
      Will 保哥
      匡正
      小朱
      董大偉
      賴榮樞
      存档
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 LINQ To XML : Descendants函式收藏

      新一篇: LINQ To SQL Synchronize Tool Beta

       
      LINQ To XML : Descendants函式
       
          在LINQ To XML 的架構中,若想取得某個Element下的指定之子Element,可以呼叫Descendants這個Extension Method,如下所示:
      foreach (XElement elem in doc.Elements("Customers").Descendants("Customer"))
            Console.WriteLine(string.Format("Customer ID : {0}, Name : {1}, Address : {2}",
                                                      elem.Attribute("ID").Value,
                                                      elem.Attribute("Name").Value,
                                                      elem.Attribute("Address").Value));
      此例所使用的XML如下:
      <?xml version="1.0" encoding="utf-8"?>
      <Customers>
       <Customer ID="A0001" Name="Tom" Address="Taipen" />
       <Customer ID="A0002" Name="Mary" Address="LD" />
       <Customer ID="A0003" Name="Jeff" Address="YW" />
      </Customers>
      不過,這有個特別的情況,當XML中包含了Namespace時,傳入Descendants的指定Element名稱就必須包含Namespace,舉個例來說,下面的.dbml(LINQ To SQL的定義檔)。
      <?xmlversion="1.0"encoding="utf-8"?>
      <DatabaseName="Northwind"Class="DataClasses1DataContext"
              xmlns="http://schemas.microsoft.com/linqtosql/dbml/2007">
       <ConnectionMode="AppSettings"ConnectionString=
      "Data Source=JEFFRAY;Initial Catalog=Northwind;Integrated Security=True"SettingsObjectName="LTSync.Properties.Settings"SettingsPropertyName="NorthwindConnectionString"Provider="System.Data.SqlClient" />
      ...........
       </Database>
      如果用下面的程式來列舉Connection Element,會以失敗收場。
      var cstr = (from s1 in doc.Descendants("Connection") select s1).First();
      問題的徵結點在於.dbml中定義了Namespace,而我們於呼叫Descendants時,只傳入Element的LocalName部份所致,仔細查看Descendants函式的宣告,你會發現其事實上接收的是一個XName型別的物件,由於XName實作了隱含轉型運算子,所以很自然的將我們傳入的字串隱含轉型為XName,只是此時得到的XName物件中只包含了LocalName部份,並未包含Namespace部份。
      要順利取得Connection Element,我們可以用下面的程式碼來達成。
      var cstr = (from s1 in doc.Descendants() where s1.Name.LocalName == "Connection" select s1).First();
      此例中我們以未帶參數的Descendants函式來取得所有子Element,並一一比對其LocalName,忽略掉Namespace。
      另一個手法是直接以Root Element的Namespace來疊加LocalName,如下所示:
      var cstr = (from s1 in doc.Descendants(doc.Root.Name.Namespace+"Connection") select s1).First();
      此手法的缺點是,欲取得的Element之Namespace必須與Root Element相同。
       

      发表于 @ 2008年04月17日 08:56:00|评论(loading...)|编辑

      旧一篇: ASP.NET 上傳進度顯示 - 補遺 (Update 04/16)

      评论

      #xmhero 发表于2008-04-22 10:21:24  IP: 121.204.152.*
      不错啊!!!加油!!!
      #fsy123456accp 发表于2008-05-15 13:00:59  IP: 221.229.219.*
      LINQ这个东东好学吗?
      发表评论  


      登录
      Csdn Blog version 3.1a
      Copyright © Code6421