2011-08-28 115 views
1

我想增加我對linq的知識,所以我想在不使用存儲過程的情況下創建以下查詢,但我不確定如何構造它。Linq to Entities查詢幫助

如果我有三個表/實體:

農民(FarmerId,BusinessTitle)

農產品(ProduceId,ProduceTitle)

FarmerProduce(FarmerId,ProduceId)

我該如何做一個查詢,搜索BusinessTitle & ProduceTitle爲一個特定的單詞(比如樹莓)並返回一個Farmer實體列表。

我可以實現搜索上產生任何農民分別例如爲:

var query = (from f in farmer 
      where f.BusinessTitle.Contains("raspberry") 
      select l).ToList(); 

var query = (from fp in FarmerProduce 
      where fp.Produce.ProduceTitle.Contains("raspberry") 
      select fp.Farmer).ToList(); 

但我不能確定如何將FarmerProduce「查找表」合併成一個單一的查詢。

回答

1

如果你只需要農民:

var query = from f in farmer 
      where f.BusinessTitle.Contains("raspberry") 
        || f.Produces.Any(p => p.ProduceTitle.Contains("raspberry")) 
      select f; 

假設多到許多被inported作爲Produces導航屬性。

+0

不錯!感謝您的快速反應。順便說一句,我認爲f.Produces.Any是爲了f.FarmerProduce.Any(這就是我必須要做的事情來讓它編譯) – Rob

2

這一個應該是一個簡單的OR或LINK的外觀。

var query = (from fp in FarmerProduce 
      where fp.Produce.ProduceTitle.Contains("raspberry") 
      || fp.Farmer.BusinessTitle.Contains("raspberry") 
      select fp.Farmer).Distinct().ToList(); 

添加不同。

+1

哈哈是的,實際上這也有效,我有一個精神空白顯然是因爲這是我通常會這樣做,並且是合乎邏輯的答案 - 對不起,我將另一個標記爲正確,但無論如何工作。我想因爲我只用一個農民修改了一個原始查詢,所以我沒有想過換成查詢FarmerProduce。 – Rob