首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将书签集转换为List<Bookmark>

将书签集转换为List<Bookmark>
EN

Stack Overflow用户
提问于 2022-02-23 07:19:53
回答 1查看 81关注 0票数 0

我在现有的Word文档中获得书签,如下所示

代码语言:javascript
运行
复制
using System.Collections.Generic;
using Word = Microsoft.Office.Interop.Word;

namespace Word_Project
{
  public class WordDoc
  {
    public Word.Application App { get; set; }
    public Word.Document Document { get; set; }
    public Word.Bookmarks Bookmarks { get; set; }

    public WordDoc(string pathToDoc)
    {
        App = new Word.Application();
        Document = App.Documents.Open(pathToDoc);

        Bookmarks = Document.Bookmarks;
    }
  }
}

书签的签名是

代码语言:javascript
运行
复制
public interface Bookmarks : System.Collections.IEnumerable

我想将它转换为List<> (System.Collections.Generic)书签不包含.ToList()-Method,而强制转换也不起作用。

代码语言:javascript
运行
复制
(List<Bookmark>)Bookmarks //error

也许这是不可能的,因为书签是一个界面,但如果有人有一个解决方案,我会很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-23 08:30:39

我只从文档中回答,因为我没有Office,所以不能使用Interop。似乎Microsoft.Office.Interop.Word.Bookmarks只公开了GetEnumerator方法,所以您也不能使用lambda ->选择aproach。

那么我提出了一个非常通用的解决方案。

代码语言:javascript
运行
复制
    private List<T> EnumeratorToList<T>(IEnumerator<T> em) 
    {
        List<T> listOut = new List<T>();
        while (em.MoveNext())
        {
            T val = em.Current;
            listOut.Add(val);
        }
        return listOut;
    }

然后打电话给:

代码语言:javascript
运行
复制
List<Bookmark> myNewList = EnumeratorToList(Document.Bookmarks.GetEnumerator());

您可以使用收益返回代替返回一个列表,但是OP要求一个列表。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71232733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档