试图弄清楚如何使用C#编写与SQL等效的代码。任何帮助,将不胜感激!谢谢! \ m / \ m /
-- SQL Xml column value: <artist artistUid="64FB513E-F519-4349-920F-5787F8E3B601" genre="Rock" />
declare
@hasRow bit = 0
select @hasRow = CASE WHEN EXISTS(select 1
from dbo.[MyDbTable]
where [MyDbTable].query('/descendant-or-self::node()/artist').value('artist[1]/@artistUid','varchar(40)') = CONVERT(varchar(40),@artistUid)
and [MyDbTable].query('/descendant-or-self::node()/artist').value('artist[1]/@genre','varchar(50)') = 'Rock') THEN 1
ELSE @hasRow END
// C#
string strArtistUid = "64FB513E-F519-4349-920F-5787F8E3B601";
string strGenre = "";
bool blnHasRow = false;
// Example Query.
MyDbTable.Where(x => XElement.Parse("<artist>").Element("artistUid").Value == strArtistUid && XElement.Parse("<artist>").Element("genre").Value == strGenre).FirstOrDefault()
// Set blnHasRow.
我想出了解决办法...
MyDbTable.Where(x => XElement.Parse(x.MyXmlColumn).Attribute("artistUid").Value.ToUpper() == strArtistUid.ToUpper() && XElement.Parse(x.MyXmlColumn).Attribute("genre").Value == strGenre).SingleOrDefault();