2011-08-02 36 views
0

我使用.NET 4.0运行ASP.NET MVC + LINQ到SQL。使用匿名类型的多表LINQ-SQL查询

我有查询与此类似:

var labels = (from c in db.Customers 
join o in db.Orders 
on c.CustID equals o.CustID 
select o).Distinct(); 

我可以做同样的匿名查询,像这样

Customers.Select(x => x.Orders)

如果我的查询深度是3或4表格深度,我该如何做到这一点?

+0

什么是匿名的? –

+0

该语法被称为“Lambda”。匿名类型是一个完全不同的概念。这意味着你返回(来自任何linq,lambda或其他)匿名类型。您应该在线查询关于linq查询,lambda表达式和匿名类型的定义以清除您的想法。 –

+0

@Matteo:现在好了_that_有道理。 –

回答

0

你有或多或少相当于该查询:

var labels = db.Customers 
    .Join(db.Orders, c => c.CustID, o => o.CustId, (c, o) => o) 
    .Distinct(); 

仅供参考,它可以通过不同的名称去。 “Lambda”语法是常见的语法。 “流利”语法是另一种。没有什么匿名的。另一方面,匿名类型是一个未命名的类型,如下所示:

var anonymousObject = new { SomeField = 2, SomeOtherField = "Foo" };