Not tested, but before the request, you could try to create your Guid-to-be-search object.
Guid searchGuid; try { searchGuid = Guid.Parse(searchKey); } catch (System.FormatException) { // Handle invalid search key } return queryable.Where(version => version.Id == searchGuid);
Edit:
Not tested (sorry, again), but afaik NHibernate.Linq can translate type conversion statements into equivalent SQL Cast functions. Perhaps this should work:
return queryable.Where(version => (string)version.Id == searchGuid);
I am not sure about C # sintax. In VB.NET, I would write something like:
Return queryable.Where(Function(version) CType(version.Id,String) = searchGuid)
source share