2013-06-30 2 views
-3

내 메소드에서 return linq에 대한 내 소스 코드에 대한 해결책을 줄 수 있습니까? 이 같은 내 소스 코드 :방법에서 linq 값을 반환하는 방법?

public int GetRole(string user, string pass) 
    { 
     TAEntities db = new TAEntities(); 
     var Hasil = from u in db.User 
        join r in db.Role 
        on u.id_Role equals r.id_Role 
        where u.userName == user && u.password == pass 
        select r.id_Role; 

     return Hasil; 
    } 

내 소스 코드를 여전히 거짓. 그리고, 지금 소스 코드를 업데이트하고 있습니다 :

public int GetRole(string user, string pass) 
    { 
     Tugas_AkhirEntities db = new Tugas_AkhirEntities(); 
     var Hasil = from u in db.User 
        join r in db.Role 
        on u.id_Role equals r.id_Role 
        where u.userName == user && u.password == pass 
        select r.id_Role; 

     return Hasil.FirstOrDefault(); 
    } 

와 나는 변수 hasil의 여부를 저장 내 값을 확인하려면이 소스 코드를 추가합니다.

if (model.GetRole(model.UserName,model.Password) == 1) 
     { 
      return RedirectToAction("Index", "Home"); 
     } 

     else 
      return RedirectToAction("Contact", "Home"); 

당신은 그것에 대해 더 많은 해결책을 줄 수 있습니까?

+2

코드와 관련된 문제점은 무엇입니까? 그것은 컴파일에 실패합니까? 예외가 발생합니까? 잘못된 값을 반환합니까? 문제가 무엇인지 알려 주시면 도움을 드리겠습니다. –

+4

또한 문제를 해결 한 후에는 코드가 해킹을 기다리는 거대한 보안 구멍임을 지적해야합니다. –

+0

질문을 편집했지만 "소스 코드가 틀렸다"는 것을 아직 모릅니다. 그것은 컴파일합니까? 댓글 섹션에서 자유롭게 대답하십시오. –

답변

4

HasilIEnumerable<int> 또는 IQueryable<int>이며 사용자의 메서드는 int을 반환합니다. First, FirstOrDefault, Single 또는 SingleOrDefault을 사용하여 값 중 하나를 선택해야합니다.

return Hasil.First(); 

또는 IEnumerable<int> 또는 IQueryable<int>에 메서드의 반환 형식을 변경합니다.

+0

감사합니다. @Lee .. 매우 도움이됩니다. – Greditasari

관련 문제