在LINQ中使用SQL“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<

我试图从我的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>();
应该是

<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>());