【发布时间】:2019-08-29 22:34:51
【问题描述】:
我想将带有重复数据的 db 查询结果重新排列到不同的行中(用于数据显示),但是如果找到超过 1 个项目,则有 1 列以逗号分隔收集相关值。
例如考虑下面的列表(来自数据库查询):
ID GROUP DATE
A1212 1 1/1/2019
A1212 2 1/1/2019
A1313 1 3/1/2019
进入:
ID GROUP
A1212 1,2
A1313 1
sql 字符串:
select DISTINCT Declaration_Form_Master.*,Declaration_Form_Detail.KPA_Group, Temp_Storage_Reg_V.*,Temp_Storage_Reg_V.ID as TSEID,Users.Company As Uc, 'NULL' as 'CTU_id' from Declaration_Form_Master left outer join Temp_Storage_Reg_V on (Declaration_Form_Master.Master_ID=Temp_Storage_Reg_V.TSEMaster_ID) right join Users on (Declaration_Form_Master.Agent_ID = Users.UserId) right join Declaration_Form_Detail on (Declaration_Form_Master.Master_ID = Declaration_Form_Detail.Master_ID) where Declaration_Form_Master.Confirmation ='1' and Submit_Date >= '2019-01-28' and Submit_Date < '2019-08-30' order by Application_ID DESC
需要加入所有表,因为搜索条件基于多个表上的列。我无法弄清楚 sql,但想使用数组或列表重新排列结果。
也许一些算法可以提供帮助。
【问题讨论】:
-
向我们展示您的 c# 代码及其外观。你是如何获取这些数据的?您是在使用 Linq 还是在强制执行此操作?
-
如果您使用的是 linq:尝试按 id 对数据进行分组,然后将
grp.Key输出到第一列,将string.Join所有分组值输出到第二列 -
您必须向我们展示您的 c# 代码,或者如果您想在 SQL 中执行此操作,请向我们展示您的尝试。
-
我使用的是传统的海量 ORM。我知道 LINQ 可以做到这一点。只需更新我的问题以包含代码中的 sql。