2009-10-09 7 views
8

내 코드는 다음과 같습니다 간단한 Linq 질문 : 두 개 이상의 열을 선택하는 방법?

  List<Benutzer> users = (from a in dc.Benutzer 
            select a).ToList(); 

나는이 코드가 필요하지만, 난 단지 "Benutzer"- 테이블에 20 3 열을 선택합니다. 구문은 무엇입니까?

+1

당신은 'Benutzer'라고 입력 했습니까? 적 지역화 된 C#을 사용하여 간주? 'Liste benutzer = (dc.Benutzer wähle a) .ZuListe();';) –

답변

20

다음은 쿼리 식입니다 :

var users = (from a in dc.Benutzer 
      select new { a.Name, a.Age, a.Occupation }).ToList(); 

또는 점 표기법이 오히려 Benutzer의 경우보다 anonymous type의 목록을 반환

var users = dc.Benutzer.Select(a => new { a.Name, a.Age, a.Occupation }) 
         .ToList(); 

참고. 개인적으로 부분적으로 채워진 인스턴스의 목록을 작성하는 것보다이 방법을 선호합니다. 그러면 부분 인스턴스를 다루는 모든 사람이 실제로 존재할 것 인지를 확인해야합니다.

편집 : 당신이 정말 Benutzer의 인스턴스를 구축하고자, 그리고 LINQ는 쿼리에 그렇게 두지 않을 경우 당신은 항상 할 수있는 (I 이유는 확실하지 않다) :

List<Benutzer> users = dc.Benutzer 
    .Select(a => new { a.Name, a.Age, a.Occupation }) 
    .AsEnumerable() // Forces the rest of the query to execute locally 
    .Select(x => new Benutzer { Name = x.Name, Age = x.Age, 
           Occupation = x.Occupation }) 
    .ToList(); 

즉 사용 DTO와 같은 익명의 타입. 반환 된 Benutzer 개체는 컨텍스트와 연결되지 않습니다.

+1

어떻게 typisite 수 있습니까? – Kovu

+2

"typisite"란 무엇을 의미합니까? –

+1

나는 익명이 아닌 Benutzer가되기를 원합니다. – Kovu

4
List<Benutzer> users = (from a in dc.Benutzer 
          select new Benutzer{ 
          myCol= a.myCol, 
          myCol2 = a.myCol2 
          }).ToList(); 

같은 종류의 목록을 만들고 싶다면 원하는 것 같습니다. 그러나 설정하는 속성에는 공개 설정자가 있다고 가정합니다.

+1

거기에 "Benutzer"를 사용할 수 없다는 오류가 발생합니다. – Kovu

+1

필자는 필드를 구분하기 위해 쉼표가 필요합니다. 이유는 그것이 깨어지기 때문입니다. – qui

+1

아주 비슷한 사용 사례로 내 컴퓨터에서 시도했지만 작동했습니다. 정확한 오류를 붙여 넣을 수 있습니까? – qui

1

시도 :

var list = (from a in dc.Benutzer select new {a.Col1, a.Col2, a.Col3}).ToList(); 

하지만 지금은하지 Benutzer 객체의 익명 개체의 목록을 가지고있다.

관련 문제