2014-06-12 3 views
2

중복 된 질문을 할 위험이 있으므로이를 작동시킬 수 없습니다. 내가하고 싶은 것의 많은 예가 있지만 문법은 전혀 동일하지 않으며 아무 것도 효과가 없습니다. 나는 Linq에게 나 자신을 가르치고있다. 이 쿼리는 SQL 서버에서 ID 목록을 가져옵니다. "ToString()"이 없다면 "GUID를 문자열 []"로 변환 할 수 없습니다. 사전에 조언하고 감사하십시오. 당신은 AsEnumerable()ToString() 전화를 강제 할GUID를 string으로 변환 Entity Framework

public string[] GetAllRoleIDs(string param) 
    {   
     using (DBEntities de = new DBEntities()) 
     { 
      string[] roleset = (from p in de.MySQLView 
         where p.anotherfield == param 
           select p.RoleID.ToString()).Distinct().ToArray(); 

      return roleset; 
     }    
    } 

답변

0

는 로컬보다는 EF 쿼리의 일환으로 를 평가한다. 예를 들어 :

using (DBEntities de = new DBEntities()) 
{ 
    string[] roleset = de.MySQLView 
         .Where(p => p.anotherfield == param) 
         .Select(p => p.RoleID) 
         .Distinct() 
         .AsEnumerable() 
         .Select(guid => guid.ToString()) 
         .ToArray(); 
    return roleset; 
} 

(나는 두 사람 사이의 혼합과 일치하는 것은 복잡해서 점 표기법을 사용하는 쿼리 식에서 변환 한, 당신은 단지 whereselect있어 당신은 사용할 수 있습니다. 물론 원하는 경우 쿼리 표현식)

+0

"점 표기"? 배워야 할 또 다른 새로운 점은 무엇입니까? :-p – Darkloki

+0

@ user116923 : "쿼리 식을 사용하는 대신 직접 확장 메서드를 호출하는 것"이라고 말하는 것입니다. 걱정 마세요 :) –

관련 문제