지금까지이 문제에 대해 40 시간을 보냈습니다.이 사이트와 Google에서 모든 솔루션을 시도했지만 아직 해결할 수 없습니다.Linq to Entities Left Outer 다른 유형으로 가입하십시오
var에 저장된 이전 쿼리의 결과에 테이블을 조인해야합니다. 결합 필드는 var의 결과에 대해 쿼리 된 테이블의 varchar이고 조인중인 테이블의 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입니다. Leaders 객체를 만들기 위해 SQL을 포함 시켰습니다. 위의 모든 것은 실제로는 왼쪽에있는 마지막 줄입니다. ( 선택 a.userfbid, SUM (a.pointvalue)의 전체적인 c.score
선택 s.name, s.email, b.score, L 왼쪽 ( 선택 userfbid, pointvalue 에서 점수 qa.id = l.qaid에 qa 합치기 q.id = qa.qid에 조인 q가 남았습니다. 왼쪽에 합계 qz.id = q.qzid 여기서 qa.pointvalue> 0 및 qz.cid = 12 합집합 전체 select fbid userfbid, 포인트 값 bn 날짜> = '5/9/2011 04:00'및 날짜 < = '5/16/2011 04 :
B 00 ) a.userfbid 의해 기) ( 선택 a.userfbid, SUM (a.pointvalue) ( 선택 userfbid, L 에서 pointvalue 에서 점수 가입을 왼쪽에 QA 가입 왼쪽 qa.id = l.qaid 이 q.id = qa.qid 에 Q 가입 왼쪽에게 qz.id = q.qzid 에 QZ에 가입했던 곳 억에서 qa.pointvalue> 0 노동 조합의 모든 선택 fbid의 userfbid, pointvalue ) a.userfbid의 그룹c.userfbid = b.userfbid
왼쪽) C는
올바른지, 리더 데이터의 값과 일치하는 값이 항상 스윕에 있어야합니다. 리더에서 값이없는 스윕에서 값을 가질 수도 있지만 중요하지 않아야합니다. .First() 및 .FirstOrDefault()를 사용하여 시도한 결과 둘 다 오류가 발생합니다. 그 문장을 제거하면, 타입 인자를 추론 할 수 없다는 오류가 발생합니다. – iniquity
내가 원하는 것은 여기 왼쪽 간단한 조인입니다. 이 코드가 왜 필요한지 이해할 수 없습니다. Leaders 변수에 userFBID 필드가 있고 db.Sweeps에 일치하는 필드가 있습니다. 스윕의 이름과 전자 메일을 이미 리더의 데이터와 비교하기 만하면됩니다. 이것은 SQL에서 최대 10 분이지만 엔티티에서는 40 시간이며 간략하게 이해할 수있는이 복잡한 코드와 수정할 수없는 오류가 있습니다. – iniquity
입력 한 코드가 모든 레코드에 대해 0 또는 ""값을 가진 빈 세트를 반환합니다. 나는 그것이 null을 얻었을 경우에만 반환하도록 의도 했으므로 다음 단계는 중단되지 않습니다. 실제로는 null이되지 않습니다. – iniquity