2011-06-14 5 views
2

나는 linq 쿼리에서 목록을 얻으려고 생각하고 있지만, 방법을 모른다. 도와주세요.linq 쿼리에서 문자열 목록을 가져 오는 방법은 무엇입니까?

내 코드는 다음과 같지만 올바르지 않습니다.

public List<string> SearchName(string pre) 
{ 
    VettingDataContext dc = new VettingDataContext(_connString); 
    List<string> query = (from a in dc.Accounts 
          where (a.FirstName + " " + a.LastName).StartsWith(pre) 
          select new {Name = a.FirstName + " " + a.LastName }).Distinct().ToList(); 
} 

답변

3

는 단순히 문자열 값을 선택해보십시오 :

public List<string> SearchName(string pre) 
{ 
    VettingDataContext dc = new VettingDataContext(_connString); 
    List<string> query = (from a in dc.Accounts 
          where (a.FirstName + " " + a.LastName).StartsWith(pre) 
          select (a.FirstName + " " + a.LastName)).Distinct().ToList(); 
} 
0

당신이 가까이있어. 시도 :

public List<string> SearchName(string pre) 
{ 
    VettingDataContext dc = new VettingDataContext(_connString); 
    List<string> query= (from a in dc.Accounts 
       where (a.FirstName + " " + a.LastName).StartsWith(pre) 
         select a.FirstName + " " + a.LastName) 
         .Distinct().ToList(); 
} 
2

단지 (그것이 자신을 반복 피하는 의미 부분적으로 있기 때문에) 번 이름을 평가하기에 좋을 것이다 - 그리고 아무 이유없이 익명 형식을 사용하지 :

public List<string> SearchName(string pre) 
{ 
    VettingDataContext dc = new VettingDataContext(_connString); 
    return dc.Accounts 
      .Select(a => a.FirstName + " " + a.LastName) 
      .Where(name => name.StartsWith(pre)) 
      .Distinct() 
      .ToList(); 
} 

참고하는 방법이 쿼리 표현 표기법 대신 점 표기법을 사용하는 것이 더 합리적이라고 생각하는 시대입니다.

+0

점 표기 지점과 완전히 일치합니다. 기본 기준은 괄호 안에 쿼리 표현식을 래핑하고 점 표기법을 사용해야하는 경우, 모든 것을 변환해야 할 때입니다. 쿼리 표현 구문에서 더 명확한 것을 사용하고자한다면, 나는 그것을 작성하고, 그것을 무언가에 할당 한 다음, 그 변수에 대해 나머지 액션을 수행 할 것입니다. – Shibumi

+0

@Shibumi : 저도 제가 보통하는 일입니다. * * * * 단 하나의 * 메소드 호출 (예 : ToList)을 위해 대괄호 안에 질의 표현식을 감싸는 경우가 있지만, 그 이상이되면 지저분 해집니다. –

관련 문제