누군가 가이 linq 쿼리와 나를 도울 수있다, 기본적으로 모든 선수는 등급 테이블에 관계없이 쿼리에 반환 된 싶습니다. 그들은 쿼리에 등급이 표시됩니다. 이 쿼리의 문제점은 판사 x가 플레이어 a의 등급을 입력 한 다음 판사 y를 쿼리하면 결과에서 플레이어 a를 얻지 못할 것입니다. 나는 이유를 이해하지만 구문을 이해할 수 있다고 생각합니다.Linq 왼쪽 가입에 대한 도움말
var players =
from p in dc.Players
join r in dc.Ratings on p.PlayerId equals r.PlayerId into ps
from r in ps.DefaultIfEmpty()
where r.JudgeId == Convert.ToInt32(JudgeId) || r.JudgeId == null
orderby p.PlayerName
select new
{
PlayerName = p.PlayerName,
PlayerId = p.PlayerId,
Passing = r != null ? r.Passing : 0,
Setting = r != null ? r.Setting : 0,
Serving = r != null ? r.Serving : 0,
Blocking = r != null ? r.Blocking : 0,
Effort = r != null ? r.Effort : 0,
Quickness = r != null ? r.Quickness : 0,
Hitting = r != null ? r.Hitting : 0,
PositionKnowledge = r != null ? r.PositionKnowledge : 0,
Total = r != null ? Convert.ToString(r.Passing + r.Setting + r.Serving + r.Blocking + r.Effort + r.Quickness + r.Hitting + r.PositionKnowledge): "You have not rated this person",
};
정말 혼란 스럽습니다. 어제 LINQPad에서 작동한다는 것을 알았지 만, 그것을 복사하고 붙여 넣는 것은 그렇지 않습니다. 미안합니다! –
아, 나는 그것이 무엇인지에 관해 안다. 내 변수 이름 var judgeId가 Convert 호출을 포함하는 늦은 편집이었습니다. 다시 답변을 드리겠습니다. 그러나이 대안을 찾은 것을 기쁘게 생각합니다. –