2009-06-25 13 views
1

XMLファイルからLinqを使用してクエリを実行し、XMLドキュメントからデータを解析して取得するときに、オブジェクトに対して2つのプロパティを設定する必要があります。私は私のsnipetが示すように2つの呼び出しを行うことができますが、私は、私は2つの呼び出しを行うために必要なだけの1コールをしたいとのClientIDとModifiedDateを移入するには2つのプロパティLinqクエリからのDbクエリ -

XDocument recentOrdersXDoc = GetResults(...); 

var q = from c in recentOrdersXDoc.Descendants("prop") 
     let handle = c.Element("handle") 
     select new ReturnResult() 
     { 
      ClientTemplateID = (string)c.Element("TemplateID"), 
      Handle = resultref != null ? (string)resultref.Attribute("handle") : null, 
      ClientID = DataContext.GetClientID((string)c.Element("TemplateID")), 
      ClientName = DataContext.GetClientName((string)c.Element("TemplateID")), 

     }; 

を移入する結果を得るでしょう。 ClientIDとClientNameの2つの列を持つClientsという表があります。上記のように、GetClientIDとGetClientNameのパラメータとして渡す必要があるときにClientTemplateIDプロパティにアクセスすることもできます。上のコードでは、XDocumentの結果を取得する必要があります。

var q = from c in recentOrdersXDoc.Descendants("prop") 
     let handle = c.Element("handle") 
     let clientTemplateID = (string)c.Element("TemplateID") 
     let client = DataContext.Clients 
      .Where(x=>x.ClientTemplateID == clientTemplateID) 
      .Select(x=>new {x.ClientID, x.ClientName}).Single() 
     select new ReturnResult() 
     { 
      ClientTemplateID = clientTemplateID, 
      Handle = resultref != null ? 
        (string)resultref.Attribute("handle") : null, 
      ClientID = client.ClientID, 
      ClientName = client.ClientName 
     }; 

これはまだ唯一のあなたは(私も、名前のいくつかの仮定をしなければならなかった)必要がある2つの列を読み取りますのようなものについてはどのように

答えて

2

+0

マーク:これは天才です。どこでどのように私はlinqのこの詳細な知識を学ぶだろうか? –

+1

「LINQ in Action」(より一般的な点については)のように、「C#in Depth」の後の章は(言語の詳細が必要な場合は)良いスタートになります。 –