2013-02-12 4 views
0

По какой-то причине я получаю синтаксическую ошибку для кода ниже. То, что я пытаюсь достичь, - ЛЕВАЯ ВСТУПЛЕНИЕ С МНОЖЕСТВЕННЫМИ ПРИСОЕДИНЯЮЩИМИСЯ КЛАССАМИ. Синтаксическая ошибка возникает в foobar ключевого слова INTO. VS 2012 говорит неожиданный токен. Любая помощь будет большой, спасибо!Linq To Sql left join, используя множественные клаузулы

Dim results = From f In foo _ 
        Join b In bar On new with {f.Type,f.ID} Equals New With {"Test",b.ID} into fooBar _ 
        from x in foobar.DefaultEmpty() _ 
        Where foo.id = 1 

ответ

1

Вы хотите Group Join:

Dim results = From f In foo _ 
       Group Join b In bar On 
        New With {f.Type,f.ID} Equals New With {"Test",b.ID} _ 
        Into fooBar = Group _ 
       from x in foobar.DefaultEmpty() _ 
       Where foo.id = 1 
+0

@d Stanley, почему бы в группе Join msdn говорится, что она делает то же самое, что и левое соединение. В чем разница и почему это работает для меня? – gh9

+1

@ gh9 В этом синтаксисе используется VB - у него есть другие возможности, помимо _equivalent_ 'LEFT JOIN' (например, возможность выбора агрегатов правой стороны), поэтому я предполагаю, что они выбрали более общий синтаксис. –

0

Try забрасывать f.ID или b.ID

Dim results = From f In foo _ 
        Join b In bar On new with {f.Type, CInt(f.ID)} Equals New With {"Test", CInt(b.ID)} into fooBar _ 
        from x in foobar.DefaultEmpty() _ 
        Where foo.id = 1 
+0

@ все еще получаю неожиданный маркер ошибки перед INTO ключевого слова – gh9