【发布时间】:2011-12-10 00:24:00
【问题描述】:
我有这样的代码
var results = (from c in Customers
join o in Orders
on c.Id equals o.CustomerId
join p in Products
on p.Id equals o.ProductId
select new
{
CustomerId = c.Id, // this is a GUID
OrderId = o.Id, // this is a GUID
ProductName = p.ProductName,
}).ToList();
假设我想获取订购具有 name = foo 的产品的所有客户 ID 的列表 我的问题是,因为它是匿名类型,我如何在我想在结果上运行的任何 Linq 查询中引用产品名称?
【问题讨论】:
-
结果在编译时是强类型的。它将具有您在选择投影中指定的名称和类型的属性。
-
您通过名称来引用 ProductName -- ProductName。我不明白问题是什么;你能澄清一下这个问题吗?
-
我想我只是对匿名类型的范围感到困惑,并且不确定这种类型在方法或类范围内的可见性。我的想法是,鉴于此类型未在任何地方声明,编译器如何确定我在说哪种类型。
-
@palmsnow msdn.microsoft.com/en-us/library/bb397696.aspx 有大量在线文档。
-
@palmsnow 匿名类型的可见性是一个明显的限制。例如,您不能从非匿名方法返回它们,因为该方法需要有一个声明来指定(并因此命名)其返回类型。
标签: c# linq anonymous-types