0

我试图反序列化 SQL Server 存储过程中的 xml,然后再将其引入 c# win 表单。我当前的结果表如下所示:

在此处输入图像描述

编辑:由于上表太小而无法阅读,下面是其中包含的示例:

第 1 列只是时间 07:00、07:09 等。
第 2 列包含以下数据:
第 1 行:

ABADILLA ARIEL<RegistrationId>29</RegistrationId>, BLAKE LORCAN<RegistrationId>30</RegistrationId>, CRONIN SHANE<RegistrationId>31</RegistrationId>

第 2 行:

ADAMS NORMAN<RegistrationId>33</RegistrationId>, ADAMS WILLIAM<RegistrationId>34</RegistrationId>, AHEARNE PAUL<RegistrationId>35</RegistrationId>, LAWLOR DES<RegistrationId>32</RegistrationId>

因此,每行最多可以包含但不超过 4 个条目。

结束编辑

我希望能够对这张表做一些事情,主要是我需要能够将其修改为以下格式:

在此处输入图像描述

但最终我想只显示带有名称的信息,但保留指向注册号的链接而不实际显示它。这部分在 c# win 表单中可能更容易完成,所以我想如果我能把它变成上面显示的格式,我会很高兴的。

迄今为止,我的 sql 代码返回结果表显示的初始值如下:

DECLARE @Registered TABLE
(CompetitionName VARCHAR(50),
CompetitionDate  Date,
StartTime TIME,
RegistrationId INTEGER,
PlayersName  Varchar(60)
)


INSERT INTO @Registered
SELECT MAX(c.CompetitionName) AS 'Competition Name', MAX(c.[Date]) AS 'Competition Date', 
CONVERT(VARCHAR, r.PlayersStartTime, 108) AS 'Start Time', MAX(r.RegistrationId) AS RegistrationId,
CASE WHEN m.MemberId IS NOT NULL THEN (m.Surname + ' ' + m.FirstName) ELSE (nm.Surname + ' '+ nm.Firstname) END AS PlayersName
FROM dbo.Competitions c
LEFT JOIN [dbo].[Registration] r ON c.[CompetitionId] = r.[CompetitionId]
LEFT JOIN dbo.Members m ON r.MemberId = m.MemberId
LEFT JOIN dbo.NonMembers nm ON r.NonMemberId = nm.NonMemberId
WHERE [Date] = '20130104'
AND c.CompetitionId = 10
GROUP BY r.PlayersStartTime, m.MemberId, m.FirstName, m.Surname, nm.FirstName, nm.Surname
----

SELECT DISTINCT Main.StartTime, 
 STUFF((SELECT ', ' + PlayersName, + RegistrationId
  FROM @Registered list
  WHERE list.StartTime = Main.StartTime
  FOR XML PATH ('')),1,2,''
  ) AS PlayerList
FROM @Registered Main;
4

0 回答 0