var list =
from a in TableA
select new B {
Count = a.TotalCount,
Title = a.Title
};
select 절에 B 인스턴스를 새로 작성하고 C# 3.0의 인라인 특성 할당 기능을 사용하여 특성을 할당하십시오.
인라인을 매핑하는 이점은 Linq 문을 지연 실행하면 얻을 수 있습니다. Linq는 수정 된 명령문을 매핑하고 IQueryable에서 실행합니다. 예를 들어 :
public class ClassA
{
public int TotalCount;
public string Title;
}
public class ClassB
{
public int Count;
public string Title;
}
public IQueryable<ClassB> FetchAllOfClassB()
{
var list =
from a in TableOfClassA
select new ClassB {
Count = a.TotalCount,
Title = a.Title
};
return list.AsQueryable();
}
기술적으로, AsQueryable()
은 약간 중복입니다. 때로는 그것을 강조하기 위해 사용하고, 다른 사람들은 절대적으로 필요하다고 말합니다. None보다 작 으면 목록 객체 자체가 ClassB의 IQueryable입니다.
그런 다음 FetchAllOfClassB()
을 호출하여 IQuerable을 사용할 수 있습니다. 꽤 매끄럽고 효율적입니다.
당신의 질문은 명확하지 않다. A와 B의 관계는 무엇인가? –
그들은 본질적으로 같은 것을 나타냅니다. 내 실제의 경우, A는 Linq to Sql 클래스를 생성하고 테이블을 추가 할 때 Linq가 Sql로 생성 한 클래스입니다. 클래스 A는 Linq와 Linq to Sql 종속성을 가지므로 내 응용 프로그램에 노출시키지 않으므로 의존성이없는 클래스 B를 만듭니다. 그래서 클래스 A 인스턴스 목록에서 클래스 B 인스턴스 목록을 채워야합니다. – Jeremy