Code:
SELECT UP.UserId
FROM UserProperties UP
WHERE UP.PropertyKey = 'FIRST_NAME'
  AND UP.DataValue = 'Woka'
  AND Exists(
       SELECT 1 
       FROM UserProperties 
       WHERE UserID = UP.UserID
         AND PropertyKey = 'LAST_NAME'
         AND DataValue = 'Widget'
     )
   AND Exists(
       SELECT 1 
       FROM UserProperties 
       WHERE UserID = UP.UserID
         AND PropertyKey = 'CITY'
         AND DataValue = 'Glasgo'
     )
   AND Exists(
       SELECT 1 
       FROM UserProperties 
       WHERE UserID = UP.UserID
         AND PropertyKey = 'PET'
         AND DataValue = 'Badger'
     )
GROUP BY UP.UserId
Hmmm...I think one thing is for sure...It looks like I will have to dynamically generaly the SQL string in code and not use a stored procedure.

Is there anything LINQ can do here to help?

cheers for the repl,ies.

Woka