2010-08-11 40 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