【问题标题】:Issue when using Visual Studio Report Designer with Linq to SQL datasource将 Visual Studio 报表设计器与 Linq to SQL 数据源一起使用时出现问题
【发布时间】:2008-11-11 03:43:52
【问题描述】:
我不希望得到很好的回应,所以如果你有这方面的经验,任何贡献都将不胜感激。
我正在尝试将 Visual Studio 报表设计器与 Linq to SQL 数据源一起使用,但我没有使用 Visual Studio 报表设计器的经验。
如果我通过向导并使用对象数据源,我可以很容易地获得列出单个实体类型(即 sql 表)的简单报告。我的问题是如何让报告接受具有匿名返回类型的连接、总和等复杂的 Linq 查询。如果我此时尝试此操作,则在尝试使用点表示法或别名来访问我需要在查询结果中引用的字段时,我会从报表设计器那里得到一个编译时错误。我认为这是因为设计师期望与向导中指定的类型相同...
错误是:-
报表项表达式只能引用
到当前数据集中的字段
范围,或者,如果在聚合内,则
指定数据集范围。
也许我最好还是使用 DataSets?
【问题讨论】:
标签:
.net
visual-studio
reporting-services
【解决方案1】:
编写一个简单的类,其中包含您的报表所需的所有属性(称之为 MyData)。
为每个属性使用简单的 .NET 类型:字符串、整数等
使用 GetXxx 方法编写另一个类,该方法返回 IEnumerable<MyData>。
此 Get 方法应返回 Linq 查询的结果。
您可以在返回之前执行 .ToList() 以获取内存中的列表,从而允许您在返回之前关闭连接。
编译。
现在打开您的报表设计器(在相同的解决方案中),您应该会在“数据源”窗口中看到 MyData 以及您编写的 Get 方法。
如果您将此数据源中的字段拖到您的报表设计器中,然后从新的 ReportViewer 控件中引用此报表,则会自动为您创建和链接 ObjectDatasource。
希望有帮助!