我把其他帖子的一些信息拼凑在一起,但我被卡住了。将匿名类型转换为强类型以进行分组查询?
第一部分正常工作。基本上我使用LINQ查询数据库,然后循环生成报告的结果。
Dim results As System.Linq.IQueryable(Of Bud900Reports.tblBud_CONNECT)
If options.Type = reportType.Organization Then
results = From p In db.tblBud_CONNECTs _
Where p.TableOldName = "tblFY" & options.FiscalYear And p.DEPTID = options.GroupFilter _
Order By p.SOURCE_CODE, p.ROW_CODE_903 _
Select p
ElseIf options.Type = reportType.Division Then
'Here is my problem line
End If
For each result in results
'loop through code generating report
Next
现在不是有很多用的dupelicate代码三个功能,如果REPORTTYPE是我司要运行该查询,并把它放到设定的结果。
results = (From p In db.tblBud_CONNECTs _
Where p.TableOldName = "tblFY" & options.FiscalYear And p.DIVISION_CODE = options.GroupFilter _
Group p By p.DIVISION_CODE, p.SOURCE_CODE, p.ROW_CODE_903 Into _
OrigEft = Sum(p.OrigEft), OrigAmt = Sum(p.OrigAmt), ABEft = Sum(p.ABEft), ABAmt = Sum(p.ABAmt) _
Order By DIVISION_CODE, SOURCE_CODE, ROW_CODE_903 _
Select DIVISION_CODE, SOURCE_CODE, ROW_CODE_903, OrigEft, OrigAmt, ABEft, ABAmt)
这是刚刚分组和总结的相同数据。但它作为一个匿名类型来完成。我试图做“用{.DIVISION_CODE = DIVISION_CODE,...}选择新的tblBud_CONNECTs”,但它给了我“显式构造实体类型tblBud_CONNECTs不被允许”的错误。
我该怎么做我想要的?看来我应该能够。谢谢。
你能详细解释一下吗?我不明白。 – 2010-08-31 15:51:53
尝试下面的代码: Dim list As New List(Of Division) 对于结果中的每个元素 Dim div As New Division With {.DivisionCode = element.DIVISION_CODE,...,.ABAmt = element.ABAmt} list.Add(div) Next DataContextInstance.Divisions.AttachAll(list) – Devart 2010-09-01 11:04:24
感谢您的回答,但我从来没有完全理解您想说什么。我最终使用了一种不同的方法,我添加了这个方法来回答这个问题。 – 2010-09-10 14:17:51