2009-10-22 46 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和可能的查詢構建器方法的解決方案。