Как получить, как вернуть данные из нескольких таблиц? - PullRequest
0 голосов
/ 29 января 2011

Я пытаюсь изменить следующий запрос для возврата данных из нескольких таблиц.

У меня есть главная таблица контактов, где хранятся все контактные данные. Компании также хранятся в таблице контактов. Компании сопоставляются с контактами в объединенной таблице с именем CompanyPersonMap.

У меня также есть таблица атрибутов, в которой контактам назначены определенные атрибуты, возможно, много для каждого контакта.

Теперь я хочу вернуть все контакты, которым назначен определенный атрибут, а также имя и адрес компании лица, найденные в другой строке таблицы контактов.

Этот код работает, но возвращает только contactId. Хорошо за то, что мне было нужно, но я не могу понять, как изменить его для вышеуказанного требования.

var peopleAndAddresses = Contacts.Where(c => c.AssignedAttributes
.Any (aa => aa.AttributeID == 1153))
.Select(x => x.ContactID);

Какие-либо предложения для этого?

Спасибо!

Edit-

Я попытался поработать с оператором .Select () и нашел путь от контакта к его организации через таблицу PersonOrgMap. К сожалению, я не могу получить какие-либо данные об организации. Я пытался .Any (), .All () и .FirstOrDefault (). Есть предложения?

. Выбрать (c => new {c.FirstName, c.LastName, c.PersonOrgMap.FirstOrDefault (pom => pom.ChildContactID)})

1 Ответ

0 голосов
/ 29 января 2011

Этот код ниже даст вам все контакты, у которых есть хотя бы один AssignedAttribute с AttributeID равным 1153. Я думаю, это то, что вы ищете.

var peopleAndAddress = Contacts
   .Where(c => c.AssignedAttributes.Any(aa => aa.AttributeID == 1153))
   .Select(c => c);

Однако ваше утверждение «имя и адрес находятся в другой строке в таблице контактов» заставляет меня думать, что это может быть не то, что вам нужно. Вы можете просто узнать, что такое Название и Адрес Компании из свойств Контакта?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...