LINQ to SQL - 특정 열을 선택하고 강하게 입력된 목록을 반환하는 방법
LINQ to SQL을 사용하여 테이블에서 몇 개의 특정 열을 선택하고 강력하게 입력된 개체 목록으로 결과를 반환하려고 합니다.
예:
var result = (from a in DataContext.Persons
where a.Age > 18
select new Person
{
Name = a.Name,
Age = a.Age
}
).ToList();
어떤 도움이라도 주시면 대단히 감사하겠습니다.
빌드는 괜찮지만 실행하면 오류가 발생합니다.엔티티 유형의 명시적 구성MyEntity
쿼리에서 사용할 수 없습니다.
기본적으로 당신은 올바른 방법으로 그것을 하고 있습니다.그러나 다음의 인스턴스를 사용해야 합니다.DataContext
쿼리를 위해 (그것은 명백하지 않습니다.DataContext
는 쿼리의 인스턴스 또는 유형 이름입니다.
var result = (from a in new DataContext().Persons
where a.Age > 18
select new Person { Name = a.Name, Age = a.Age }).ToList();
보아하니, 그Person
class는 LINQ에서 SQL로 생성된 엔티티 클래스입니다.다음 열 중 일부만 사용하려면 고유한 클래스를 만들어야 합니다.
class PersonInformation {
public string Name {get;set;}
public int Age {get;set;}
}
var result = (from a in new DataContext().Persons
where a.Age > 18
select new PersonInformation { Name = a.Name, Age = a.Age }).ToList();
자유롭게 교환할 수 있습니다.var
와 함께List<PersonInformation>
아무 영향도 주지 않고 여기에 있습니다(이것이 컴파일러가 하는 일입니다).
그렇지 않으면 쿼리를 로컬에서 작업하는 경우 익명 유형을 고려하는 것이 좋습니다.
var result = (from a in new DataContext().Persons
where a.Age > 18
select new { a.Name, a.Age }).ToList();
참고로 이 모든 경우에,result
는 정적으로 형식화되어 있습니다(이 형식은 컴파일 시에 알려져 있습니다).후자의 유형은 a입니다.List
유사한 익명 클래스를 생성한 컴파일러의PersonInformation
위에 쓴 수업.C# 3.0을 기준으로 언어에 동적 타이핑이 없습니다.
업데이트:
만약 당신이 정말로 반품을 원한다면,List<Person>
(가장 적합한 방법이 아닐 수도 있음), 다음과 같은 작업을 수행할 수 있습니다.
var result = from a in new DataContext().Persons
where a.Age > 18
select new { a.Name, a.Age };
List<Person> list = result.AsEnumerable()
.Select(o => new Person {
Name = o.Name,
Age = o.Age
}).ToList();
위의 문장도 병합할 수 있지만, 명확하게 구분했습니다.
문제는 사실 속성 중 하나가 다른 테이블과의 관계라는 것이었습니다.전체 테이블을 로드할 필요 없이 다른 메소드에서 동일한 데이터를 가져올 수 있도록 LINQ 쿼리를 변경했습니다.
여러분의 도움에 감사드립니다!
myid(행의 ID)를 사용하여 DB 검색을 호출하고 다음과 같은 특정 열을 반환합니다.
var columns = db.Notifications
.Where(x => x.Id == myid)
.Select(n => new { n.NotificationTitle,
n.NotificationDescription,
n.NotificationOrder });
언급URL : https://stackoverflow.com/questions/1094931/linq-to-sql-how-to-select-specific-columns-and-return-strongly-typed-list
'programing' 카테고리의 다른 글
Oracle에서 최대 절전 모드: CLOB 열에 문자열 속성 매핑 (0) | 2023.08.01 |
---|---|
jQuery.scrollTop(); + 애니메이션 (0) | 2023.08.01 |
PowerShell의 함수에 해시 테이블을 전달하는 방법은 무엇입니까? (0) | 2023.08.01 |
와일드카드(%)만 값으로 사용하는 SQL LIKE 성능 (0) | 2023.08.01 |
Angular에서 @Input()은 무엇에 사용됩니까? (0) | 2023.08.01 |