LINQ to NHibernate - 将 guid 与字符串进行比较

标签 linq nhibernate linq-to-nhibernate

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/

相关文章:

c# - 优化 nhibernate session factory,webApp 的启动时间真的很慢

linq - LINQ-to-NHibernate FetchMany 的 where 子句?

NHibernate - 如何在返回父类(super class)时查询子类属性?

entity-framework-4.1 - Entity Framework 4.1和NHibernate的抓取策略封装

c# - PLINQ遍历chunk分区的实现

c# - 使用 Linq 获取集合的最后 N 个元素?

c# - 可能有重复的键时如何添加到字典中?

sql - 如何在不删除表的情况下更新数据库模式

.net - 如何使用 CaSTLe ActiveRecord/NHibernate 防止在 Flush 上将对象更改写入数据库

c# - 如何在Linq中通过属性获取元素的值