C# - EF类SqlQuery和SQL Server “FOR XML PATH”
问题描述:
我有这样的SQL查询C# - EF类SqlQuery和SQL Server “FOR XML PATH”
Select Ident
From Synchronization.ObjectsToResend
Where SyncTypeId = 36
FOR XML PATH('')
返回
<Ident>8</Ident>
<Ident>9</Ident>
<Ident>10</Ident>
<Ident>11</Ident>
<Ident>12</Ident>
<Ident>13</Ident>
<Ident>14</Ident>
<Ident>16</Ident>
<Ident>17</Ident>
我认为这是一个结果,我可以这样映射到单一在C#中的字符串。
_context.Database.SqlQuery<string>([email protected]"Select Ident From Synchronization.ObjectsToResend Where SyncTypeId = {id} FOR XML PATH('')");
不幸的是,我得到
序列包含不止一个结果
如果我添加“顶部1”到我的查询,我只得到一个订货号,所以我可以遍历一个异常通过结果。这不是我想要的。
是否有可能将我的xml作为一个元素返回?性能很重要。
答
可能是你必须添加一个根节点:
Select Ident From
Synchronization.ObjectsToResend
Where SyncTypeId = 36
FOR XML PATH(''),ROOT('root');
没有根节点的XML可以采取许多独立的线路
的StringValue =的string.join( “”(your_select_that_returns_more_than_one_result) )//用空字符串或environment.newline替换逗号分隔符,以适合您所需的输出为准。 – Paul
你需要修复你的sql查询来返回一个值。或者你可以使用保罗的方式。 – Saadi
在使用xml的mssql中,以简单的方式执行此操作是不可能的? – adamo94