使用 linq 选择后是否可以保留属性类型?

Is possible keep the properties type after using linq selection?

此问题与 部分相关。特别是我需要保留类型 HtmlNodeCollection 的 属性,本质上我只需要获得具有文本的 select 的选项,实际上是 select 结构,看起来像这样:

<select class="foo">
    <option></option>
    <option>item1</option>
    <option>item2</option>
</select>

所以我这样做了:

var grps = doc.DocumentNode.SelectNodes("//select[@id='group_id_selector']//option")
           .Where(c => c.InnerText != string.Empty);

此代码有效,但我无法访问每个对象的 属性,因为现在 grps 集合是一个 Enumerable,而我需要一个 HtmlNodeCollection, 我尝试将 as HtmlNodeCollection 添加到末尾,但代码 return null.

有什么想法吗?

我认为 ToList() 方法是您在这里想念的,试试这个:

var grps = doc.DocumentNode.SelectNodes("//select[@id='group_id_selector']//option")
       .Where(c => c.InnerText != string.Empty).ToList();

WhereSelect 方法(以及更多)return Enumerable 个对象。调用ToList()方法会return对应类型:)