Как вы решаете неоднозначность между типами в 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
Однако я был бы удивлен, если бы это повлияло на вашу проблему, так как мне кажется, что ему трудно определить, какие поля использовать в качестве ключей соединения.
Измените пространства имен на объектах, чтобы они отличались.