중복 가능: LINQ to SQL: 익명 유형 반환?
데이터를 익명 유형(다양한 데이터 유형의 데이터 약 6열 포함)으로 반환하는 표준 LINQ to SQL 쿼리가 있습니다.
이 반환 된 객체를 메서드 호출자에게 반환하거나 메서드가 포함 된 객체의 속성에 할당하여 프로그램의 다른 부분에서 사용할 수 있도록하고 싶습니다.
익명 유형('var&39;>)인 경우 어떻게 해야 하나요?
편집 - 여기 코드가 있습니다:
using (ormDataContext context = new ormDataContext(connStr))
{
var electionInfo = from t1 in context.elections
join t2 in context.election_status
on t1.statusID equals t2.statusID
select new { t1, t2 };
}
익명 유형을 클래스로 만들기...
public class Person
{
public Person() {
}
public String Name { get; set; }
public DateTime DOB { get; set; }
}
Person p =
from person in db.People
where person.Id = 1
select new Person {
Name = person.Name,
DOB = person.DateOfBirth
}
C#에서는 어떤 메서드도 익명 타입의 명시적 타입으로 입력할 수 없습니다. 말하자면 '이름'을 지정할 수 없으므로 메타데이터 서명에 표시할 수 없습니다.
정말로 익명 유형인 값을 반환하려는 경우 두 가지 옵션이 있습니다.
익명 타입은 실제로 이런 식으로 전달되도록 고안된 것이 아닙니다. 이러한 방식으로 함수 간에 전달해야 하는 경우에는 유형을 명시적으로 정의하는 것이 좋습니다.
예를 들면 다음과 같습니다.
var person = new Person { Name = "bob" };
사람과 사람, 유형의 가변입니다 사용할 경우에도 var 키워드.
익명 유형은 = {이름을 사용하여 새로운. }. 이 경우 it& # 39 의 새로운 익명 클래스를. 단 한가지 변수가 할당하십시오 var (또는 객체) 를 사용하여 정의할 수 없기 때문에 기존 이름을 사용할 수 있습니다.
예를 들면 다음과 같습니다.
var person = new { Name = "bob" };
이 경우 런타임에 익명의 사람이 정의된 유형.
일반적으로 @Chalkey 통과할 수 있다』 고 스케쳐내 다른 방법을 사용하여 명명된 유형, 익명의 한 결과 다시 없습니다.
존 스키트가 이 방법을 설명하는 블로그를 작성했는데, 제목이 Horribly Grotty Hack입니다. 제목에서 알 수 있듯이 익명의 타입을 반환하는 방법을 찾아서는 안 됩니다. 대신 반환할 수 있는 유형을 만드는 것이 이 기능을 구현하는 올바른 방법이기 때문입니다.
따라서 반환할 유형에 대한 구체적인 정의를 만든 다음 이를 쿼리에 입력하여 반환하는 것이 좋습니다.
이 종류의 데이터를 사용하여 코드 진행 과정은 호출하십시오 방식에 따라 다릅니다.
수행할 경우 단순한 데이터 바인딩, 정말 don& # 39, t care about 유형 (즉 너회가 don& 액세스 할 수 있는 C #, # 39 는 명시적으로 특성는 code) 를 이언 험버이블 표시됨과 뒤로를 결과를 전달할 수 있습니다.
대부분의 경우 다트라빈딩 호출하십시오 통해 정확한 유형 속성 이름으로 매직 문장열 doesn& # 39, t, 아무튼 그래서 중요한 겁니다.
그렇지 않으면 변환하십시오 익명 유형을 필요한 명명된 유형:.