在LINQ中使用SQL“CAST”
我试图从我的SQL数据库中获取XMl,使用CAST和查询 这就是我试图让它工作的方式:在LINQ中使用SQL“CAST”,sql,entity-framework,linq,wcf,Sql,Entity Framework,Linq,Wcf,我试图从我的SQL数据库中获取XMl,使用CAST和查询 这就是我试图让它工作的方式: string str = db.Database.SqlQuery<string>("SELECT CAST(CAST(Content AS VARBINARY(MAX)) AS XML) AS DashboardXML FROM ReportServer$SRVSQL2012.dbo.Catalog WHERE Name = 'DannyTest.xml'").FirstOrDefault<
string str = db.Database.SqlQuery<string>("SELECT CAST(CAST(Content AS VARBINARY(MAX)) AS XML) AS DashboardXML FROM ReportServer$SRVSQL2012.dbo.Catalog WHERE Name = 'DannyTest.xml'").FirstOrDefault<string>();
应该是
<Dashboard CurrencyCulture="da-DK">
解决
我没有使用XElement.loadwhere,而是使用了XElement.parsewhere,因为LINQ语句的输出是字符串
像这样:
XElement xelement = XElement.Parse(
db.Database.SqlQuery<string>(
"SELECT CAST(CAST(Content AS VARBINARY(MAX)) AS XML)
AS DashboardXML FROM ReportServer$SRVSQL2012.dbo.Catalog WHERE Name = 'DannyTest.xml'")
.FirstOrDefault<string>());
这样,字符串就可以正确地转换为可读的XML
XElement xelement = XElement.Parse(
db.Database.SqlQuery<string>(
"SELECT CAST(CAST(Content AS VARBINARY(MAX)) AS XML)
AS DashboardXML FROM ReportServer$SRVSQL2012.dbo.Catalog WHERE Name = 'DannyTest.xml'")
.FirstOrDefault<string>());