Как вы решаете неоднозначность между типами в Linq?

У меня есть два набора сущностей с сущностями с одинаковыми именами и свойствами с одинаковыми именами. Следовательно:

 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, Я считаю, что это потому, что formEntities2011 и formEntities2010 оба имеют Client юридическое лицо.

Обычно я бы просто добавил пространство имен для устранения неоднозначности, но я не знаю, как это сделать в операторе Linq?

Ошибка "Член определен более одного раза" для c.Client_ID и ac.Client_ID

2 ответа

Решение

Если вы хотите явно назначить тип, попробуйте использовать методы расширения и 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

Однако я был бы удивлен, если бы это повлияло на вашу проблему, так как мне кажется, что ему трудно определить, какие поля использовать в качестве ключей соединения.

Измените пространства имен на объектах, чтобы они отличались.

Другие вопросы по тегам