C#LINQ to SQL查询数据库中的XML列

时间:2019-05-21 14:59:22

标签: c# sql linq linq-to-sql

试图弄清楚如何使用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();

0 个答案:

没有答案