如何从Linq查询返回匿名场

问题描述:

我想从LINQ的query.My查询得到匿名场如何从Linq查询返回匿名场

from p in product 
Select new myProduct 
{ 
    id = p.Id, 
    Name = p.Name, 
    P.MobileNo 
} 

//Here is myProduct class 

class myProduct 
{ 
    public int Id, 
    public string Name 
} 

现在这里P.MobileNo是匿名的,我也想回到that.I不能更改myProduct类中的任何内容。

任何人都知道如何做到这一点?

感谢

+0

你不能。 MobileNo不是“匿名的”,它不存在。没有办法分配不存在的字段... – 2014-09-30 12:20:32

+0

没有“匿名属性”。你甚至不能将'匿名类'从**方法**发送回另一个。但是如果你使用.NET 4.5,你可以这样做。怎么样?使用'动态类'。 – 2014-09-30 12:23:05

您将需要使用匿名类型

from p in product 
select new 
{ 
    p.Id, 
    p.Name, 
    p.MobileNo 
} 

或建立包含MobileNo财产另一个名为类型。如果您需要从方法中返回此代码

创建一个将从myProduct继承的类。

class myProduct 
{ 
    public int Id {get;set;} 
    public string Name {get;set;} 
} 
class mySecondProduct : myProduct 
{ 
    public string MobileNo {get;set;} 
} 

在LINQ:

from p in product 
Select new mySecondProduct 
{ 
    id = p.Id, 
    Name = p.Name, 
    P.MobileNo 
} 

你可以包裹myProduct的对象,并在P.MobileNo匿名类型:

from p in product 
select new 
{ 
    Product = new myProduct { Id = p.Id, Name = p.Name}, 
    MobileNo = P.MobileNo 
}