2010-08-11 43 views
3
的enity對象

我能加入列表對象在.NET中收集與EF的enity對象例如我能加入.NET集合中的列表對象與EF

var prodts = from req in Product 
       join prod in context.ProductApplications on req.ProductGUID equals prod.ProductGUID 
       slect req; 

產品是lsit對象。和context.ProductApplications是Enity對象。

我能加入他們的行列,任何一個可以請讓我知道如何加入themm

回答

3

你能做到這一點,是的。替代方法鏈接語法:

var prodts = Product. 
      Join(
        context.ProductApplications, 
        req => req.ProductGUID, 
        prod => prod.ProductGUID, 
        (req, prod) => req 
       ); 

這將返回IEnumerable<Product>。 Join方法以IEnumerable<>作爲第一個參數,所以實際發生的事情是數據庫將被查詢並提取context.ProductApplications,結果將被枚舉。生成的對象將用於與您的Product集合「加入」。

更新

根據你的意見,你有一些GUIDsProduct(s?)集合中,你想獲取來自context.ProductApplications所有實體「匹配」的GUIDs(糾正我,如果我錯了)。如果是這樣的話,你並不需要join

var prodts = context. 
      ProductApplications. 
      Where(pa => Product. 
         Select(p => p.ProductGUID). 
         Contains(pa.ProductGUID) 
       ); 
+0

謝謝您的回答,我稍微不同勢問題, 在我的數據庫中,我有一個包含一些的GUID一個臨時表,我想在數據庫中找到具有相同的GUID在臨時表中的所有產品.product表是巨大的,因爲我做了簡單的連接數據庫和retive的數據。 如果我想在MT的Enity框架中完成它,我創建了一個列表集合並加入到產品的enity中,就像上面提到的那樣。但在從數據庫中提取數據的同時,它正在調整。 希望你明白這個問題,有沒有一種方法可以在enity框架中解決 – 2010-08-11 13:17:03

+0

不,我真的不明白這個問題,你可以嘗試以不同的方式來組織你的解釋嗎?這些觀點現在相當模糊:''我創建了一個列表集合並加入了產品環境「 - 就我所見,您有一系列產品(它被稱爲'Product',順便說一句,這是一個錯字嗎?它應該是「產品」嗎?)和一系列產品應用程序(即時提取)。你用'LINQ'加入他們並得到最終的集合。糾正我,如果我錯了。另一個模糊的句子是這樣的:「但是它是在從數據庫中提取數據時調整出來的」 – Yakimych 2010-08-11 15:45:23

+0

好吧,讓我改述一下,當我使用上面提到的連接時,它會拋出錯誤說超時而錯誤來自數據庫的行,我的意思是從context.ProductApplications enity中挑選行。因爲數據庫中的ProductApplications表非常龐大。 我該如何解決這個問題。 – 2010-08-12 04:56:05