Nhibernate Nhibernet选择计数
我有两个实体 A: 如何使用NHibernate ICriteria选择仅包含图片计数大于0的产品的列表Nhibernate Nhibernet选择计数,nhibernate,icriteria,Nhibernate,Icriteria,我有两个实体 A: 如何使用NHibernate ICriteria选择仅包含图片计数大于0的产品的列表 关于海带如果您需要一些精确的图片值,您可以使用: Product productAlias = null; var criteria = CurrentSession.CreateCriteria(typeof(Product), () => productAlias); ICriteria productsCriteria = criteria.CreateCriteria<
关于海带如果您需要一些精确的图片值,您可以使用:
Product productAlias = null;
var criteria = CurrentSession.CreateCriteria(typeof(Product), () => productAlias);
ICriteria productsCriteria = criteria.CreateCriteria<Product>(x => x.Pictures);
DetachedCriteria picturesCount = DetachedCriteria.For<Picture>();
picturesCount.SetProjection(Projections.RowCount());
picturesCount.Add<Picture>(x => x.Product.ID == productAlias.ID);
productsCriteria.Add(Subqueries.Gt(/*number of pictures*/, picturesCount));
return criteria.List<Customer>();
如果您不需要空集合,那么可以使用IsNotEmpty restriction您不需要为此使用条件查询。您可以使用简单的Linq实现
public IEnumerable<Product> GetProductWithPictures(IEnumerable<Product> allProducts)
{
return allProducts.Where(x=>x.Pictures.Any());
}
请注意,使用比计数>0更快的任何内部参数
对不起,我有点忘了你正在从数据库检索它。这是在这种情况下你需要做的事情
public IEnumerable<Product> GetProductWithPictures()
{
return Session.Linq<Product>.Where(x=>x.Pictures.Any());
}
public IEnumerable<Product> GetProductWithPictures(IEnumerable<Product> allProducts)
{
return allProducts.Where(x=>x.Pictures.Any());
}
public IEnumerable<Product> GetProductWithPictures()
{
return Session.Linq<Product>.Where(x=>x.Pictures.Any());
}