2012-04-26 2 views
18

linq 쿼리 결과를 목록으로 변환해야합니다.LINQ 쿼리 결과를 List로 변환하는 방법?

var qry = from a in obj.tbCourses 
        select a; 

List<course> lst = new List<course>(); 
lst = qry.ToList(); 

다음 오류가 위의 코드를 발생 : 나는 다음과 같은 코드를 시도

Cannot implicitly convert type 
System.Collections.Generic.List<Datalogiclayer.tbcourse> to 
System.Collections.Generic.List<course> 
+0

어떻게 도움이되지 않았습니까? 그 일이 일어나지 않았 으면 어떻게했을까요? – BrokenGlass

+0

BTW, 귀하의 코드가 훨씬 짧아 질 수 있습니다 ... 'var lst = obj.tbCourses.ToList();' –

+0

가능한 중복 [목록에 linq 쿼리에 대한 구문 ] (http://stackoverflow.com/questions/7488980)/syntax-for-linq-query-to-liststring) – nawfal

답변

15

너무 많은 일을 할 필요가 없습니다 ..

var query = from c in obj.tbCourses 
     where ... 
     select c; 

은 그럼 당신은 사용할 수 있습니다

List<course> list_course= query.ToList<course>(); 

그것은 나를 위해 잘 작동합니다.

5

당신은 명시 적으로 정의 유형 coursetbcourse 개체를 변환 할 select new LINQ 키워드를 사용해야합니다. select new의 예 : 당신은 어떻게 든 course의 인스턴스에 각 tbcourse 개체를 변환 할 필요가

var q = from o in db.Orders 
     where o.Products.ProductName.StartsWith("Asset") && 
       o.PaymentApproved == true 
     select new { name = o.Contacts.FirstName + " " + 
           o.Contacts.LastName, 
        product = o.Products.ProductName, 
        version = o.Products.Version + 
           (o.Products.SubVersion * 0.1) 
        }; 

http://www.hookedonlinq.com/LINQtoSQL5MinuteOverview.ashx

8

. 예를 들어 course에는 tbcourse을 사용하는 생성자가있을 수 있습니다. 당신은 다음과 같이 쿼리를 작성할 수

var qry = from c in obj.tbCourses 
      select new course(c); 

List<course> lst = qry.ToList(); 
+0

이것은 창조적입니다! 그러나 모델 프로젝트가 이제 데이터 저장소에 종속 될 수 있다는 단점이 있습니다. 소규모 프로젝트에서는 아키텍처와 콘서트 분리에 따라 문제가 될 수 있습니다. – msigman

1

당신이 할 수있는 일은 모든 것을 코스의 새로운 인스턴스로 선택한 다음 나중에 그것을리스트로 변환하는 것입니다.

var qry = from a in obj.tbCourses 
        select new Course() { 
         Course.Property = a.Property 
         ... 
        }; 

qry.toList<Course>(); 
16
List<course> = (from c in obj.tbCourses 
       select 
       new course(c)).toList(); 

당신은 전화에 직접 목록에 엔티티 객체를 변환 할 수 있습니다. 다른 데이터 구조체 (목록, 배열, 사전, 조회 또는 문자열)로 변환하는 방법이 있습니다

+0

이 IMHO가 가장 좋은 답변입니다. 이것은 하나의 명령 일뿐만 아니라'from ... select ...'linq 구문이 표준 형식 ('tbCourses.Select()'와 같은 의미를 유지함을 보여줍니다) – miroxlav

관련 문제