2010-07-15 54 views
0

快速背景 - 我有一个表单,它向用户提供了一些可选的选项,并在我的服务上提供了一个搜索方法,它接受所有这些字段,在主IQueryable列表上附加必要的Where()条件。LINQ-to-NHibernate按合成字段筛选IQueryable - “无法解析属性”错误

其中一个过滤器是必须与IQueryable中三个不同字段的组合进行比较的字符串列表。这里的投掷“无法解析财产”错误代码:

var searchResults = _transactionHeaders.Retrieve(); 
if (subgroups.Any()) 
    searchResults = searchResults.Where(s => subgroups.Contains(s.CustomerType + s.RusNumber + s.GroupNumber)); 

return searchResults.ToList() 

我读了几个帖子暗示的别名需求并不直接映射NHibernate的映射任何属性被创建。我不太确定这是我的问题的解决方案。

对此提出建议?谢谢你尽你所能的帮助。

+1

更新:我试图改变我的查询方法来建立动态查询(http://ayende.com/Blog/archive/2009/05/19/nhibernate-queries-examples.aspx),但无法得到那个工作无论是。 希望一个计算出来的属性能够工作,我试着快速入门将这3个字段加在一起: 公共虚拟字符串SubgroupCode {{return CustomerType + RusNumber + GroupNumber; }}} 然后我改变where子句: 如果(subgroups.Any()) SearchResult所= searchResults.Where(S => subgroups.Contains(SubgroupCode)); 不幸的是,同样的“无法解决财产”的错误。 – 2010-07-15 12:42:59

回答

0

Linq2Nhibernate无法理解.Contains方法调用。你将不得不改变你的查询,所以它与linq2nhibernate兼容。