2009-12-09 4 views
1

제 천재 전임자가 응용 프로그램의 데이터베이스에 'xml_data'열을 포함하기로 결정했습니다. 이제 다른 응용 프로그램을 위해이 XML에 저장된 정보를 사용해야합니다. 데이터베이스에서 xml을 가져 오는 일반 쿼리를 수행하고 LINQ를 사용하여 XML에서 필요한 데이터를 추출하려고합니다. 다음은 몇 가지 예를 들어, XML은 다음 각 행은이 패턴을 다음과 그것의 자신의 XML 문서를 가지고 있기 때문에LINQ 및 XML ... 디버깅에 도움이 필요합니다

<?xml version="1.0"?> 
<data> 
    <field> 
    <name normalized="id_num"></name> 
    <value> 
     <![CDATA[12345]]> 
    </value> 
    </field> 
    <field> 
    <name normalized="blah"></name> 
    <value> 
     <![CDATA[asdfasdf]]> 
    </value> 
    </field> 
... 
</data> 

, 나는 SQL 결과를 반복하고 나는이 같은 XML에서 필요한 값을 추출하기 위해 노력하고 있습니다 :

List<String> collection = new List<String>(); 
while (sqlreader.Read()) 
{ 
    XElement response = XElement.Parse(sqlreader["xml_data"].ToString()); 
    var name = from field in response.Elements("field") 
       where (string)field.Element("name").Attribute("normalized") == "id_num" 
       select field.Element("value").Value; 
    collection.Add(name.ToString()); 
} 

나는 내가 원하는 내가 값 대신 다시이 점점 계속 때문에 잘하지 알고 :

System.Linq.Enumerable+WhereSelectEnumerableIterator`2[System.Xml.Linq.XElement,System.String] 

PS 제발 친절 해, 나는 Python 프로그래머이고 C#이나 .NET에 익숙하지 않다.

답변

2

name.ToString() 대신 name.FirstOrDefault() 또는 name.First()가 필요합니다. 'id_num'이라는 필드를 찾지 못하면 전자는 null을, 후자는 예외를 throw합니다.

LINQ 쿼리는 컬렉션을 반환합니다 (단, 사용자의 경우 일반 데이터라고 가정하면 단일 항목 컬렉션이됩니다).

+0

당신은 The Man .... –

관련 문제