2011-09-05 65 views
2

例如,许多一对多的关系,this example员工和地址有许多一对多的关系,以及Employee类有一个属性如何查询NHibernate的

public virtual IList<Address> Addresses { get; set; } 

在这个例子中,我如何创建一个linq查询来获取所有具有X作为其地址之一的员工(X是Address变量)?

我能想到的:

q => q.Where(employee => employee.Addresses.IndexOf(X)>=0); 

但我认为这不会被优化,将是非常昂贵的。

+0

我想你不希望创建针对它的 'EmployeeAddresses' 视图和查询? – henginy

回答

3

试试这个:

q => q.Where(e => e.Addresses.Any(<your condition goes here>)) 

例如

q => q.Where(e => e.Addresses.Any(a => a.City == "Moscow"))