c# - 在 LINQ 查询中进行转换

标签 c# .net linq .net-3.5

是否可以在 LINQ 查询中进行转换(为了编译器)?

下面的代码并不可怕,但如果能将它放在一个查询中就好了:

Content content = dataStore.RootControl as Controls.Content;

List<TabSection> tabList = (from t in content.ChildControls
                            select t).OfType<TabSection>().ToList();

List<Paragraph> paragraphList = (from t in tabList
                                 from p in t.ChildControls
                                 select p).OfType<Paragraph>().ToList();

List<Line> parentLineList = (from p in paragraphList
                             from pl in p.ChildControls
                             select pl).OfType<Line>().ToList();

代码继续进行一些查询,但要点是我必须为每个查询创建一个列表,以便编译器知道 content.ChildControls 中的所有对象是 TabSection 类型,t.ChildControls 中的所有对象都是 Paragraph 类型...依此类推。

在 LINQ 查询中是否有一种方法可以告诉编译器 from t in content.ChildControls 中的 tTabSection

最佳答案

试试这个:

from TabSection t in content.ChildControls

此外,即使这不可用(或者对于您可能遇到的不同的 future 场景),您也不会局限于将所有内容转换为列表。转换为 List 会导致当场进行查询评估。但是,如果删除 ToList 调用,则可以使用 IEnumerable 类型,它将继续推迟查询的执行,直到您实际迭代或存储在真实容器中。

关于c# - 在 LINQ 查询中进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/158634/

相关文章:

c# - DownloadFile 停止下载文件

c# - Linq:返回大型数据集的结果计数

c# - 如何等待 worker 清空阻塞队列

c# - 覆盖静态字段

c# - 为什么当值类型是引用类型的属性时,它的行为就像引用类型?

c# - 在 propertygrid 中填充 JSON

C++ 创建增强图元文件导致空文件

c# - 为什么我可以在迭代 LINQ 列表时对其进行编辑?

c# - 使用 LINQ 搜索、添加和更新

c# - 与 WCF 服务共享事件