1
var xEle = new XElement("ContentDetails",
            from emp in _lstContents
            select new XElement("Contents",
                        new XAttribute("key", emp.Key),
                        new XAttribute("PublishedDate", emp.PublishedDate),
                        new XAttribute("FilePathURL", emp.FilePathURL),
                        new XAttribute("ID", emp.TitleID),
                        new XAttribute("ContentName", emp.Name)
                        ));

レコード全体を含む_lstContents。私はLinQ操作によってXmlDocumentをフレーム化する必要があります。それが達成可能であることがわかっていて、それを実行しました。これは私が行ったサンプルXMLです。

<ContentDetails>
  <Contents ContentName="Sample Project Plan SOW" ID="3"
        FilePathURL="http://192.168.30.59/contentraven/Uploads/Custom_View_LLC/EncryptedFile/zsg34g45tfblrkvzjh0cdlvs_17_7_2012_19_24_3.doc"
        PublishedDate="2012-07-10T14:37:02.073" key="310-072012-A5CDE"/>
</ContentDetails>

でも今必要なのは

<ContentDetails>
  <Contents ContentName="Sample Project Plan SOW" ID="3"
        FilePathURL="http://192.168.30.59/contentraven/Uploads/Custom_View_LLC/EncryptedFile/zsg34g45tfblrkvzjh0cdlvs_17_7_2012_19_24_3.doc"
        PublishedDate="2012-07-10T14:37:02.073" key="310-072012-A5CDE"/>
   <categories>
      <category id="1" categoryname="Category-1" contentid="3"/>
      <category id="2" categoryname="Category-2" contentid="3"/>
      <category id="3" categoryname="Category-3" contentid="3"/>
  </categories>
</ContentDetails>

私はこのようなことを試みています

var xEle = new XElement("ContentDetails",
            from emp in _lstContents
            select new XElement("Contents",
                        new XAttribute("key", emp.Key),
                        new XAttribute("PublishedDate", emp.PublishedDate),
                        new XAttribute("FilePathURL", emp.FilePathURL),
                        new XAttribute("ID", emp.TitleID),
                        new XAttribute("ContentName", emp.Name),
                            new XElement("Categories",
                                new XElement("Category",
                                    new XAttribute("ID", emp.Category.ForEach(_P => _P.CategoryID ),
                                    new XAttribute("CategoryName", emp.Category.ForEach(_P => _P.CategoryName))
                                )

                        ));

どうすればこれを達成できますか?

emp.Categoryは、_lstContentsリストのプロパティリストです。

emp.Categoryで見つかった数のCategoryName属性を作成する必要があります。

同封のスクリーンショットを参照してください。ありがとうございました

ここに画像の説明を入力してください

4

1 に答える 1

2

これでほぼ完了です。カテゴリコレクション内のアイテムを要素に投影する必要がありますcategory_lstContentsアイテムをContents要素に投影する方法と大差ありません。

var contentDetails =
    new XElement("ContentDetails",
        from contents in _lstContents
        select new XElement("Contents",
            new XAttribute("ContentName", contents.Name),
            new XAttribute("ID", contents.TitleID),
            new XAttribute("FilePathURL", contents.FilePathURL),
            new XAttribute("PublishedDate", contents.PublishedDate),
            new XAttribute("key", contents.Key),
            new XElement("categories",
                from category in contents.Category
                select new XElement("category",
                    new XAttribute("id", category.CategoryID),
                    new XAttribute("categoryname", category.CategoryName),
                    new XAttribute("contentid", category.ContentID)
                )
            )
        )
    );
于 2012-07-25T15:41:49.117 に答える