Left Join

 
0
 
.NET
ava
Corey | 20.01.2013, 19:49
Здравствуйте.

Подскажите, пожалуйста, как можно решить такую задачу.
Необходимо для запроса использовать Linq, запрос будет работать под разные СУБД.

Т.е. что-то вроде такого (в реальности таблиц больше конечно):
for(i=0;i<3;i++) //значения i=0,1,2 - входная непостоянная последовательность
      {      var q = from m in A
                    join v in B on m.Id equals v.Id into v1
                    from v2 in v1.DefaultIfEmpty()
                    where v2.TfId == i
                    select new { m.Id, v2.TfId };
      }

Вместо for будет использоваться массив со значениями, ну а вот запросы на выходе записывать бы как последущие стобцы, например, в IEnumerable. Т.е. "A" в запросе - тип IEnumerable, "B" - таблица или тоже IEnumerable.
Или можно иначе решить?

Буду благодарен за любую помощь.
Kommentare (1)
ava
jonie | 09.07.2013, 21:53 #

var myInput = new List<int> {0,1,2}; //значения i=0,1,2 - входная непостоянная последовательность
      {      var q = from m in A
                    join v in B on m.Id equals v.Id into v1
                    from v2 in v1.DefaultIfEmpty()
                    where myInput.Contains(v2.TfId)
                    select new { m.Id, v2.TfId };
      }

если linq провайдер не глупый, то поймет этот самый хитрый Contains экстеншен как SQL вариант WHERE id IN(0,1,2)
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
  jonie   Corey
advanced
Absenden