2010-01-22 48 views
17

如何使用EF4在选择中检索元组?从EF选择返回元组

 var productCount = (from product in context.products 
        select new Tuple<Product, int>(product, products.Orders.Count)); 

或者

 var productCount = (from product in context.products 
        select Tuple.Create(product, products.Orders.Count)); 

实体框架说,不能使用的第一种情况不是空的构造函数,而不是承认Tuple.Create法第二。

回答

19

如何切换到LINQ到对象的投影:

var productCount = from product in context.products 
       select new {Product = product, Count = products.Orders.Count }; 
var final = from item in productCount.AsEnumerable() 
      select Tuple.Create(item.Product, item.Count); 
+1

这将是唯一的选择:https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=520269 – 2010-01-22 16:36:54

+0

不是一个猜测,然后,考虑;我已经upvoted“连接”项目。 – 2010-01-22 16:40:58

+0

我这样做。但是不存在更好的选择? – 2010-01-22 18:04:21

2

尝试

var productCount = from product in context.products 
        select new { product, Count = products.Orders.Count }; 

这将返回一个匿名类型,这是非常接近的元组 http://msdn.microsoft.com/en-us/library/bb738512.aspx

+4

我知道。但匿名类型不公开 – 2011-08-27 18:44:50