你如何解决Linq中类型之间的歧义?

时间:2011-02-02 18:13:23

标签: c# linq linq-to-entities

我有两个实体集,其中包含具有相同名称的同名实体。因此:

 FormsEntities formEntities2011 = new FormsEntities2011();
 FormsEntities formEntities2010 = new FormsEntities2010();

我对每个问题都有疑问:

 // -- Get a list of Clients from the 2010 Database for this agent
 var clients2010Query = from c in formsEntities2010.Clients
                        join ac in formsEntities2010.Agent_Client on c.Client_ID equals ac.Client_ID
                        where ac.Agent_ID == a.Agent_ID
                        orderby c.Client_ID
                        select c;

但是我在关于Clients之间的歧义的连接语句中收到错误。我相信这是因为formEntities2011formEntities2010都有一个Client实体。

通常我会添加命名空间来解决歧义,但我不知道如何在Linq语句中这样做?

在c.Client_ID和ac.Client_ID上错误是“成员定义了多次”

2 个答案:

答案 0 :(得分:0)

如果您想明确指定类型,请尝试使用扩展方法和Cast

var c2010 = formsEntities2010.Clients
                .Join( formsEntities1010.Agent_Client
                                        .Where( ac => ac.Agent_ID == a.Agent_ID ),
                       c => c.Client_ID,
                       ac => ac.Client_ID,
                       (c,ac) => c )
                .Cast<Forms2010.Client>(); // or whatever namespace you choose

但是,如果这会影响您的问题,我会感到惊讶,因为在我看来,它很难确定哪些字段用作连接键。

答案 1 :(得分:0)

将实体上的名称空间更改为不同。