求救:linq查询问题
数据存储在xml文件中
xml格式:
<dataset>
<table>
<编号>0001</编号>
<姓名>暗暗</姓名>
<性别>男</性别>
<医生>甲</医生>
<项目>CT</项目>
<疗程>11/44</疗程>
<检查费>33.99</检查费>
<中药费>99.88</中药费>
</table>
<table>
<编号>0001</编号>
<姓名>暗暗</姓名>
<性别>男</性别>
<医生>甲</医生>
<项目>CT</项目>
<疗程>12/44</疗程>
<检查费>33.99</检查费>
<中药费>99.88</中药费>
</table>
<table>
<编号>0002</编号>
<姓名>暗暗阿</姓名>
<性别>男</性别>
<医生>乙</医生>
<项目>X光</项目>
<疗程>0/0</疗程>
<检查费>33.99</检查费>
<中药费>99.88</中药费>
</table>
<table>
<编号>0002</编号>
<姓名>暗暗阿</姓名>
<性别>男</性别>
<医生>乙</医生>
<项目>X光</项目>
<疗程>0/0</疗程>
<检查费>33.99</检查费>
<中药费>99.88</中药费>
</table>
</dataset>
注:当疗程不为0/0时显示最后一次
查询条件:1、根据编号对检查费、中药费求和
结果:编号 姓名 性别 医生 疗程 检查费 中药费 项目
001 暗暗 男 甲 12/44 67.98 199.76 CT
002 暗暗阿 男 乙 0/0 67.98 199.76 X光
2、根据医生姓名统计
结果:医生 检查费 中药费 病人人数 CT X光
甲 67.98 199.76 1 267.74 0
乙 67.98 199.76 1 0 267.74
3、根据收费类别统计
结果:收费类别 总计 人数 CT X光
检查费 135.96 2 67.98 67.98
中药费 399.52 2 199.76 199.76
4、根据项目统计
结果:项目 人数 检查费 中药费
CT 1 67.98 199.76
X光 1 67.98 199.76
快疯了,哪位大大帮帮忙,谢谢!!!!!!
[解决办法]
你可以不用linq ,首先把xml文件的数据读取到临时表里面,然后操作临时表就可以实现了,datatable有一个select的方法
[解决办法]
Dim dt1 As New DataTable ' 编号 Dim id As DataColumn = New DataColumn() id.DataType = System.Type.GetType("System.String") id.ColumnName = "编号" dt1.Columns.Add(id) ' 姓名 Dim name As DataColumn = New DataColumn() name.DataType = System.Type.GetType("System.String") name.ColumnName = "姓名" dt1.Columns.Add(name) ' 性别 Dim sex As DataColumn = New DataColumn() sex.DataType = System.Type.GetType("System.String") sex.ColumnName = "性别" dt1.Columns.Add(sex) ' 医生 Dim doctor As DataColumn = New DataColumn() doctor.DataType = System.Type.GetType("System.String") doctor.ColumnName = "医生" dt1.Columns.Add(doctor) ' 项目 Dim project As DataColumn = New DataColumn() project.DataType = System.Type.GetType("System.String") project.ColumnName = "项目" dt1.Columns.Add(project) ' 疗程 Dim time As DataColumn = New DataColumn() time.DataType = System.Type.GetType("System.String") time.ColumnName = "疗程" dt1.Columns.Add(time) ' 检查费 Dim examineMoney As DataColumn = New DataColumn() examineMoney.DataType = System.Type.GetType("System.Double") examineMoney.ColumnName = "检查费" dt1.Columns.Add(examineMoney) ' 中药费 Dim midMoney As DataColumn = New DataColumn() midMoney.DataType = System.Type.GetType("System.Double") midMoney.ColumnName = "中药费" dt1.Columns.Add(midMoney) Dim ds As New DataSet ds.ReadXml(New System.Xml.XmlTextReader("C:\Documents and Settings\0122bl\デスクトップ\test.xml")) For i As Integer = 0 To ds.Tables(0).Rows.Count - 1 dt1.Rows.Add(ds.Tables(0).Rows(i).ItemArray) Next '查询条件:1、根据编号对检查费、中药费求和 Dim query = From data In dt1.AsEnumerable() _ Group data By id1 = data.Field(Of String)(dt1.Columns(0).ColumnName) _ Into g = Group _ Select New With _ { _ .Jianchafei = g.Sum(Function(order) order.Field(Of Double)(dt1.Columns(6).ColumnName)), _ .zhongyaofei = g.Sum(Function(order) order.Field(Of Double)(dt1.Columns(7).ColumnName)) _ }