C# Linq到实体-根据查询语法与方法语法的投影

C# Linq到实体-根据查询语法与方法语法的投影,c#,linq-to-sql,entity-framework-4,linq-to-entities,C#,Linq To Sql,Entity Framework 4,Linq To Entities,由于LINQ查询表达式被翻译为“隐藏”以调用相应方法查询将调用的相同方法(至少我认为是这样),因此我希望这两个查询返回相同的类型。但出于某种原因: var result = from i in db.Invoices select new { i.InvoiceNum }; 在创建匿名类型时,将结果设置为IQueryable 试一试 您将看到它返回您期望的类型。这些类型不相同,第一个是返回匿名类型,要使它们相同,您需要将第一个作为: var result = from

由于LINQ查询表达式被翻译为“隐藏”以调用相应方法查询将调用的相同方法(至少我认为是这样),因此我希望这两个查询返回相同的类型。但出于某种原因:

var result = from i in db.Invoices
             select new { i.InvoiceNum };

在创建匿名类型时,将结果设置为
IQueryable

试一试


您将看到它返回您期望的类型。

这些类型不相同,第一个是返回匿名类型,要使它们相同,您需要将第一个作为:

var result = from i in db.Invoices
         select i.InvoiceNum;

在第一条语句中,创建一个匿名类型,其中一个属性名为“InvoiceNum”。这是因为您使用了
new{}
语法。该匿名类型不是字符串。等效的方法语法为:

var result = db.Invoices.Select(i => new { i.InvoiceNum });
var result = from i in db.Invoices
         select i.InvoiceNum;
var result = db.Invoices.Select(i => new { i.InvoiceNum });