Это может не быть ответом для Linq to SQL, но это решило проблему для Entity Framework, с аналогичным результатом sql. В поисках лучшего решения сейчас.

я есть левое внешнее соединение (ниже), возвращающее результаты, как и ожидалось. Мне нужно ограничить результаты от «правильной» таблицы до «первого» попадания. Могу ли я сделать это как-нибудь? В настоящее время я получаю результаты для каждой записи в обеих таблицах, я хочу видеть только один результат из таблицы слева (элементы), независимо от того, сколько результатов у меня в правой таблице (фотографии).

        var query = from i in db.items
                join p in db.photos
                on i.id equals p.item_id into tempPhoto
                from tp in tempPhoto.DefaultIfEmpty()
                orderby i.date descending 
                select new
                {
                    itemName = i.name,
                    itemID = i.id,
                    id = i.id,
                    photoID = tp.PhotoID.ToString()
                };


    GridView1.DataSource = query;
    GridView1.DataBind();

Ответы на вопрос(3)

Ваш ответ на вопрос