return queryable.Where(version => version.Id.ToString().Contains(searchKey));
此行将导致“不支持 ToString 异常”。
目标:创建将字符串、整数、GUID 与字符串关键字进行比较的搜索查询。
谢谢你的帮助。
最佳答案
尚未测试,但您可以尝试在查询之前构建您的 Guid-to-be-searched 对象:
Guid searchGuid;
try
{
searchGuid = Guid.Parse(searchKey);
}
catch (System.FormatException)
{
// Handle invalid search key
}
return queryable.Where(version => version.Id == searchGuid);
编辑:
尚未测试(再次抱歉),但 afaik NHibernate.Linq 能够将类型转换语句转换为等效的 SQL Cast 函数。也许这应该有效:
return queryable.Where(version => (string)version.Id == searchGuid);
不过,我不确定 C# sintax。在 VB.NET 中,我会这样写:
Return queryable.Where(Function(version) CType(version.Id,String) = searchGuid)
关于LINQ to NHibernate - 将 guid 与字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11329643/