Я, вероятно, уже потратил 40 часов на эту проблему, я попробовал все решения на этом сайте и в Google, и я до сих пор не могу сделать эту работу.
Мне нужно присоединить таблицу к результатам предыдущего запроса, хранящимся в переменной. Поле соединения - это varchar в таблице, запрашиваемый для результата в var, и bigint (long) в соединяемой таблице. Вот текущая попытка, которая говорит мне: «Ссылка на объект не установлена на экземпляр объекта». Все ошибки сущностей кажутся мне чепухой и ложью, я предполагаю, что она пытается сказать мне, что ничего не найдено, но кто знает.
List<reportUser> ru = leaders
.GroupJoin(db.sweeps,
a => a.FBID.ToString(),
s => s.userFBID.First().ToString(),
(a, matching) => new reportUser
{
FBID = a.FBID,
CurrentPoints = a.CurrentPoints,
Name = matching.FirstOrDefault().Name,
Email = matching.FirstOrDefault().email
}
?? new reportUser
{
FBID = 0,
CurrentPoints = 0,
Name = "",
Email = ""
})
.Select(a => a)
.ToList();
Вот SQL, запрошенный ниже. Я включил SQL для построения объекта Leaders, все вышесказанное действительно должно представлять последнюю строку, которая является просто левым соединением.
выберите s.name, s.email, b.score, c.score в целом
от (
выберите a.userfbid, сумма (a.pointvalue) оценка
от (
выберите userfbid, pointvalue
от л
осталось присоединиться к qa на qa.id = l.qaid
оставляем соединение q на q.id = qa.qid
оставьте соединение qz на qz.id = q.qzid
где qa.pointvalue> 0 и qz.cid = 12
объединить всех
выберите fbid userfbid, pointvalue
из БН
где дата> = '5/5/2011 04:00' и
дата <= '16.05.2011 04:00'
)
группа по a.userfbid
) b </p>
оставил соединение (
выберите a.userfbid, сумма (a.pointvalue) оценка
от (
выберите userfbid, pointvalue
от л
осталось присоединиться к qa на qa.id = l.qaid
оставляем соединение q на q.id = qa.qid
оставьте соединение qz на qz.id = q.qzid
где qa.pointvalue> 0
объединить всех
выберите fbid userfbid, pointvalue
из БН
)
группа по a.userfbid
) c on.userfbid = b.userfbid
оставил соединение с s.userfbid = b.userfbid
упорядочить по счету desc