Это может не быть ответом для 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();