Linq to sql 实现IEnumerable

Linq to sql 实现IEnumerable,linq-to-sql,generics,Linq To Sql,Generics,我正在使用LINQ,并且很难理解如何使新的域模型类在LINQ中工作,同时跨表查询。我正在使用LINQtoSQL和.NET3.5中的C 假设我想要一个扩展的客户机类: public class ExtendedClient { public int ID { get; set; } public string Name { get; set; } public string strVal { get; set; } } 在我的数据层中,我想从两个表中填充它dc是我的Da

我正在使用LINQ,并且很难理解如何使新的域模型类在LINQ中工作,同时跨表查询。我正在使用LINQtoSQL和.NET3.5中的C

假设我想要一个扩展的客户机类:

public class ExtendedClient 
{
    public int ID { get; set; }
    public string Name { get; set; }
    public string strVal { get; set; }
}
在我的数据层中,我想从两个表中填充它dc是我的DataContext:

public ExtendedClient getExtendedClient(int clientID)
{
    var c = dc.GetTable<tClient>();
    var cs = dc.GetTable<tClientSetting>();
    var q = from client in c
            join setting in cs
            on client.ClientID equals setting.ClientID
            where client.ClientID == clientID
            select new ExtendedClient { client, setting.strValue };
    return q;   
}
我试图返回表tClient中的行加上tClientSetting中的一个额外列

我遇到的恼人错误有: 无法使用集合初始值设定项初始化类型“ExtendedClient”,因为它未实现“System.Collections.IEnumerable” 和 无法将类型“System.Linq.IQueryable”隐式转换为“ExtendedClient”。存在显式转换。是否缺少强制转换

我意识到这是一个基本错误,但我无法确定如何最好地实现IEnumerable,因为我找不到示例


每次我想要一个特殊的对象时都必须这样做吗?提前感谢。

为什么要使用特殊类型

public ExtendedClient getExtendedClient(int clientID)
{
    var c = dc.GetTable<tClient>();
    var cs = dc.GetTable<tClientSetting>();
    var q = from client in c
            join setting in cs
            on client.ClientID equals setting.ClientID
            where client.ClientID == clientID
            select new ExtendedClient { ID = client.ClientID, Name = client.Name, strVal = setting.strValue };
    return q.Single();
}
我认为,如果设置客户端设置关系以创建属性client.Settings而不是Settings.client,则可以执行client.Settings.strValue。据我记忆所及,这种配置在LINQ中是可能的

from client in c
join setting in cs
on client.ClientID equals setting.ClientID
where client.ClientID == clientID
select new { ID = client.ClientID, Name = client.Name, strVal = setting.strValue };