2017-10-24 14 views
0

ラムダ構文でLINQを使用してXMLフラグメントからオブジェクトのリストをロードしようとしていますが、新しいオブジェクトを作成する際にラムダ構文に問題があります。ここでLINQ to XML Lambda構文を使用してオブジェクトコレクションを設定する

は、データを保持するカスタムクラスである:私はそのようなコードを使用してみましたが

<response> 
    <control> 
    <status>success</status> 
    <dtdversion>3.0</dtdversion> 
    </control> 
    <operation> 
    <authentication> 
     <status>success</status> 
     <userid>jsmith</userid> 
    </authentication> 
    <result> 
     <status>success</status> 
     <physicianlist> 
     <physician> 
      <lastname degree="MD">Smith</lastname> 
      <firstname>Paul</firstname> 
     </physician> 
     <physician> 
      <lastname degree="DO">Smith</lastname> 
      <firstname>Paul</firstname> 
     </physician> 
     </physicianlist> 
    </result> 
    </operation> 
</response> 

:ここ

public class PhysicianInfoModel 
{ 
    string FirstName; 
    string LastName; 
    string Degree; 
} 

は私がからオブジェクトのコレクションをロードしようとしていたサンプルXMLであります次のように私はそれが正しいとは限りません知っているので、Visual Studioでintellisenseすべての "赤い絡み合っているライン"です。この例では、xmlは上記のXMLをロードしたXDocumentオブジェクトです。あなたのSelect()参照個々physician要素のコンテキストで

List<PhysicianInfoModel> nodeList = xml.Descendants("physicianlist") 
           .Descendants("physician") 
           .Select(x => new PhysicianInfoModel() 
           { 
            FirstName = x.?????, 
            LastName = x.????, 
            Degree = x.Attribute("degree") // Not working 
           }); 

答えて

1

xあなたはxから直接degree属性を取得することはできませんので。 3つのフィールドの可視性は、privatedefault visibility)のでwon't be accessible from outside of the classPhysicianInfoModelあるのでおそらくけど、私はできない、すべての「赤い波線が」ある。また

List<PhysicianInfoModel> nodeList = 
      xml.Descendants("physicianlist") 
       .Descendants("physician") 
       .Select(x => new PhysicianInfoModel() 
       { 
        FirstName = (string)x.Element("firstname"), 
        LastName = (string)x.Element("lastname"), 
        Degree = (string)x.Element("lastname").Attribute("degree") 
       }) 
       .ToList(); 

:あなたは、最初の子lastname要素を取得する必要があります実際のエラーメッセージを投稿していないため、これが当てはまる場合は必ず確認してください。

+0

ありがとうございます。私は 'x.Element(" lastname ")' – webworm