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作为一个元素返回?性能很重要。

+0

的StringValue =的string.join( “”(your_select_that_returns_more_than_one_result) )//用空字符串或environment.newline替换逗号分隔符,以适合您所需的输出为准。 – Paul

+0

你需要修复你的sql查询来返回一个值。或者你可以使用保罗的方式。 – Saadi

+0

在使用xml的mssql中,以简单的方式执行此操作是不可能的? – adamo94

可能是你必须添加一个根节点:

Select Ident From 
Synchronization.ObjectsToResend 
Where SyncTypeId = 36 
FOR XML PATH(''),ROOT('root'); 

没有根节点的XML可以采取许多独立的线路