Linq To Entity - проблема фильтра реляционных данных - PullRequest
0 голосов
/ 11 июня 2011

У меня есть 2 таблицы. Таблица 1 и Таблица 2. Они имеют отношение один ко многим. Я пытаюсь сделать запрос, как показано ниже. Работает нормально с поиском результата. Я имею в виду, если он не может найти какой-либо результат в соответствии с параметрами, я получил нулевое значение, как обычно. Однако он все результаты таблицы 2 все время показывает в классе таблицы 1, и я хочу получить только результаты таблицы 2 согласно запросу.

dc.Table1s.SingleOrDefault(t1 => t1.SearchField1 == param1 
                           && t1.Table2s.Any(t2 => t2.SearchField2 == param2 
                                          && t2.SearchField3 == param3));

Я хочу получить результат как класс Table1 и отфильтрованный с помощью Table1.Table2s. Это возможно ???

1 Ответ

0 голосов
/ 11 июня 2011

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

Например, если в таблице 2 есть ссылка на таблицу 1, а в таблице 1 содержится коллекция таблицы 2:

var result = (from t1 in Table1s
             from t2 in t1.Table2s // this leverages the relationship
             where t1.sf1 == p1 
                   && t2.sf2 = p2
                   && t2.sf3 == p3
             select t1).FirstOrDefault();

Вышеуказанное объединит вас, используя ваши отношения, и даст вам все t1, которые соответствуют критериям.

...