none
关于Linq的select new查询语句用法的疑问 RRS feed

  • 问题

  • 现有一段要被查询到的xml,局部如下:

    - <dsobject handle="Document-1480477" classname="Document" baseClassname="Document">
    - <props>
      <prop name="DocumentTypeDesc" type="10">Herry-jack</prop> 
    </props>
    </dsobject>

    Linq查询如下:

     var query = from dsobject in document.Descendants("dsobject")
                 where dsobject.Attribute("classname").Value == "Document"
                 select new
                 {
                   DocID = new
                   {
                    Id = dsobject.Attribute("handle").Value,                                      },
                   DocumentTypeDesc = from prop in dsobject.Descendants("prop")
                                      where prop.Attribute("name").Value == "DocumentTypeDesc"
                                      select new
                                      {
                                        Val = prop.Value
                                      }
                  }
    //-----------------------------------------------
    string docid = item.DocID.Id;
    string dt = item.DocumentTypeDesc.First().Val;
    //-----------------------------------------------

    select new中又嵌套一个select new有什么作用?(在DocumentTypeDesc =......那里)
    Val = prop.Value又是什么意思?Val不就是一个查询字段吗?怎么可以给它直接赋值?Val与DocumentTypeDesc的关系是什么?

    2012年5月10日 3:11

答案

  • 第一个 select New 是在xml中去查询

     <dsobject handle="Document-1480477" classname="Document" baseClassname="Document">

    的值

    第二个Select New 是上面的节点中去查询

    <props>
      <prop name="DocumentTypeDesc" type="10">Herry-jack</prop> 
    </props>
    

    所以你能够看到  每个from 关键词 后面都是 去 dsobject 中去查询

    爱吃西瓜的小强[mcpd]

    2012年5月10日 7:43