C# 如何通过dapper传递XML字符串作为查询的参数?

C# 如何通过dapper传递XML字符串作为查询的参数?,c#,dapper,C#,Dapper,我需要使用Dapper将数千个ID的列表作为参数传递给查询以进行筛选 即使没有,您也可以发送到SQL Server,在集合中循环并创建大量参数是一个不雅观的解决方案 幸运的是,我看到您可以发送一个XML字符串,查询可以解包 但是我不知道如何通过Dapper传递这个XML字符串。最后,这并不是那么难,只是需要一些努力,将各种知识和一些尝试与错误结合起来 这是查询的简化版本: 选择不同的[普通人].[Idf]作为[Idf] ,[常客][名字] ,[常客][姓氏] 来自[常客][常客][常客] [常客

我需要使用Dapper将数千个ID的列表作为参数传递给查询以进行筛选

即使没有,您也可以发送到SQL Server,在集合中循环并创建大量参数是一个不雅观的解决方案

幸运的是,我看到您可以发送一个XML字符串,查询可以解包


但是我不知道如何通过Dapper传递这个XML字符串。

最后,这并不是那么难,只是需要一些努力,将各种知识和一些尝试与错误结合起来

这是查询的简化版本:

选择不同的[普通人].[Idf]作为[Idf] ,[常客][名字] ,[常客][姓氏] 来自[常客][常客][常客] [常客][Idf]在哪里 选择Idf 从…起 选择Idf=XTbl.value'.'和'NVARCHAR10' 从@Idfs.nodes'/root/Idf'作为XDXTbl 作为XmlToData 订购人 [常客][姓氏] ,[常客][名字] 它作为一个.sql文件嵌入到我的解决方案中,我使用QueryRetriever类检查它的代码来读取它

要传递到查询的ID需要转换为XML字符串:

var idfsAsXml=新XDocument 新希勒门特酒店, 卓越记录 .Selectx=>x.Idf 不同的 .Selectx=>new-xelementif,x .托斯特林; 然后,我使用Dapper的DynamicParameters创建一个参数:

var dynamicParameters=新的dynamicParameters; 动态参数。Add@Idfs,idfsAsXml,DbType.Xml,ParameterDirection.Input; 然后我将该参数作为DbType.Xml和ParameterDirection.Input传递:

使用var connection=newsqlconnection\u connectionString { regularRecords=connection.Query QueryRetriever.GetQueryGetRegularRecords.sql, 动态参数 托利斯特先生; }
这可能会对其他人有所帮助。

如果您想将数千个ID传递给一个查询,您应该考虑使用。