C # LINQ to SQL Query XML столбец в базе данных - PullRequest
0 голосов
/ 21 мая 2019

Попытка выяснить, как кодировать эквивалент SQL с использованием C #. Любая помощь будет оценена! Спасибо! \ м / м /

-- 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...