2009-10-22 45 views
0

我确定这是直接的,但我对实体查询很陌生,可能以前曾被问过。使用一组实体对象搜索数据库

我需要寻找所有的业务在我的数据库,他们有我已经建立了存在一个类的集合在一个类别

IList<businessCategory> busCatList; 

busCatList.Add(businessCategory.CreatebusinessCategory(1,"Tourism")); 
busCatList.Add(businessCategory.CreatebusinessCategory(2,"Accomidation")); 
busCatList.Add(businessCategory.CreatebusinessCategory(3,"Entertainment")); 
busCatList.Add(businessCategory.CreatebusinessCategory(4,"Bar")); 
busCatList.Add(businessCategory.CreatebusinessCategory(5,"Club")); 

var items = Data.DBEntities.business.Where(b.businessCategory.Contains(busCatList)); 

我知道查询的语法是错误的,但基本上是什么我什么查询做使出浑身那里设有一个类别中的busCatLsit

在我的数据库中的一个业务匹配任何一类可以链接到许多类型

在SQL我会做业务

SELECT name FROM business 
join businessCategoryRlnshp on businessCategoryRlnshp.businessID = business.ID 
where categoryID in (1,2,3) 
+0

这个问题可能有帮助:http://stackoverflow.com/questions/374267/contains-workaround-using-linq-to-entities – 2009-10-22 18:49:07

+0

在我的数据库中,我有一个BusinessCategoryRelationship表和Category表,一个business表被附加到许多类别。我希望能够根据类别对象集合或类别标识列表检索收集业务。我一直在寻找这个简单的查询两天,但不能得到任何东西返回业务 – Simon 2009-10-23 20:50:18

回答

0

只是想在这里了解你的心思;)

var items = busCatList.Where(businessCategory => b.businessCategory.Contains(businessCategory)); 
+0

我在找什么是找出我是否可以搜索一个实体对象集合,与另一个对象集合,如果有任何匹配,然后我想要拉出父母。 如果一个企业(家长)拥有一个类别集合,而busCatList是我正在搜索的类别的集合,那么如果一个企业在busCatList中存在一个类别,那么我希望该业务被重新调整为一个集合 – Simon 2009-10-23 11:13:46

0

我真的不能想象在LINQ一个很好的解决方案 - 我的意思是不是某种执行查询几次其他 - 一个用于每个业务类别。

但是,在SQL Server 2008中有一项新功能 - 将表变量传递给存储过程。这可以通过将具有1个DataTable的DataSet作为参数传递给代码来完成。 您当然可以为IEnumerable编写一个扩展方法,将其转换为类似于ToList()或ToDictionary()方法的DataSet。 存储过程返回实体可以在EntityFramework 1.0中使用,所以这应该在理论上使拼图点击。

PS>还有一个使用E-SQL和可能的查询构建器方法的解决方案。