AdomdCommand cmd = new AdomdCommand(commandText, conn);
CellSet cs = cmd.ExecuteCellSet();
var result = from a in cs
select new
{...};
是否可以使用 LINQ 从 CellSet 读取?我曾尝试使用 DataTable 而不是 CellSet,但速度要慢得多(例如:我进行了一个查询,使用 DataTable 需要约 45 秒才能执行,但使用 CellSet 需要约 5 秒)。
尝试使用 LINQ 时遇到的错误:
找不到源类型“Microsoft.AnalysisServices.AdomdClient.CellSet”的查询模式的实现。未找到“选择”。
更新:
我已经尝试过 Enrico 的建议,到目前为止它没有返回任何错误。下一个问题是如何从单元格中读取值。这是我到目前为止所尝试的:
var result = from cell in cs.Cells.Cast<Cell>()
select new searchResultsPolicy
{
PolicyNumber = ...
InsuredName = cell.Field<string>("[Insured].[DBA Name].[DBA Name].[MEMBER_CAPTION]"),
Agency = cell.Field<string>("[Agency].[Agency Name].[Agency Name].[MEMBER_CAPTION]"),
Market = cell.Field<string>("[Market].[Market Name].[Market Name].[MEMBER_CAPTION]"),
Revenue = String.Format("{0:#,##0}", cell.Field<double?>("[Measures].[Revenue]") ?? 0),
Premium = String.Format("{0:#,##0}", cell.Field<double?>("[Measures].[Premium]") ?? 0)
};