2012-11-22 3 views
0

루프 외부의 변수에 액세스하려면 어떻게해야합니까? 아래 코드는 작동하지 않는 것으로 보입니다. 변수는 비어 있습니다.foreach 루프 외부의 변수 액세스

var userID; 
foreach(var row in db.Query("SELECT ProviderUserId FROM webpages_OAuthMembership WHERE UserID = @0", currentUserId)) 
{ 
    userID = row.ProviderUserId; 

} 
var userID1 = userID; 
+2

'var userID; '는 어떻게 컴파일됩니까? –

+1

코드가 작동합니다. 사용자 ID가 할당 된 마지막 값은 비어 있습니다. –

+0

쿼리를 문자열 배열로 바꾸면 내 컴퓨터에서 컴파일되지 않습니까? –

답변

0

당신의 foreach 루프 반환 유지에 대한 IEnumerable 수집

var userID; 
foreach(var row in db.Query("SELECT ProviderUserId FROM webpages_OAuthMembership WHERE UserID = @0", currentUserId)) 
{ 
    userID = row.ProviderUserId; 

} 
var userID1 = userID; 

userID 당신이 할 수있는이 당신의 값을 원하는가 반복

List<string> userIDs = new List<string>(); 
foreach(var row in db.Query("SELECT ProviderUserId FROM webpages_OAuthMembership WHERE UserID = @0", currentUserId)) 
{ 
    userIDs.Add(row.ProviderUserId); 

} 
//Now You have items in userIDs List 
2

? 첫번째? 마지막? 결과가 없으면 어떻게해야합니까?

LINQ는 아마 여기에 간단한 방법입니다 :

string sql = "SELECT ProviderUserId FROM webpages_OAuthMembership WHERE UserID = @0"; 
var userId = db.Query(sql, currentUserId) 
       .Select(x => x.ProviderUserId) 
       .SingleOrDefault(); 
if (userId != null) 
{ 
    ... 
} 

(있는 그대로 ProviderUserId이 어떤 종류의 nullable 형식이 아니라 우리가 훨씬 정말이없는 경우 작동하지 않습니다 물론 현재 정보 ...)