2010-04-07 3 views
1
이 코드를 실행하려고

: 나는 문제가 orderby itemTaxonomy.Taxonomy.Name 함께 생각는 ORDERBY 가입 LINQ는

Cannot implicitly convert type 'System.Linq.IOrderedQueryable<Website.Models.ItemTaxonomy>' to 'Website.Models.ItemTaxonomy' . An explicit conversion exists (are you missing a cast?)

하지만 난 그냥 생각 : 나는 그것을 컴파일 할 때

ItemTaxonomy iTaxonomy = from itemTaxonomy in connection.ItemTaxonomy 
         where itemTaxonomy.Item.ID == itemView.ID 
         orderby itemTaxonomy.Taxonomy.Name 
         select itemTaxonomy; 

을 나는 오류 ID 대신 분류 항목의 이름으로 주문하려고합니다. 그렇게 할 수있는 방법이 있습니까?

답변

5

아니, 문제는 변수가 단일 항목 반면 결과가 순서 것입니다.

주문을 표현할 때 여러 값을 기대해야합니다. 그러면 무엇을하고 싶습니까? 옵션 :

  • 사용 First()이 해당 항목의 ID로 모든 것들 중 가장 오래된 이름으로 ItemTaxonomy를 반환합니다

    ItemTaxonomy iTaxonomy = (from itemTaxonomy in connection.ItemTaxonomy 
              where itemTaxonomy.Item.ID == itemView.ID 
              orderby itemTaxonomy.Taxonomy.Name 
              select itemTaxonomy).First(); 
    

    . 대신 단일 항목으로,

    IEnumerable<ItemTaxonomy> taxonomies = 
        from itemTaxonomy in connection.ItemTaxonomy 
        where itemTaxonomy.Item.ID == itemView.ID 
        orderby itemTaxonomy.Taxonomy.Name 
        select itemTaxonomy; 
    

    지금 당신이 처리하는 분류 체계의 순서를 가지고 :
  • 은 변수 유형을 변경

    .

+0

고마워요! 그건 내 바보 같았 어. 나는 목록으로 결과 셋업을하지 못했음을 완전히 놓쳤다. –

0

LINQ 쿼리는 ItemTaxonomy 변수에 할당하려고하는 ItemTaxonomy 개체 집합 (IEnumerable<T>)을 반환합니다.

변수 유형을 IEnumerable<ItemTaxonomy>으로 변경해야합니다. 당신은 쿼리에서 단일 값을 캡처 할 것으로 보인다

2

(또는 First() 전화).

var iTaxonomy = from itemTaxonomy in connection.ItemTaxonomy 
       where itemTaxonomy.Item.ID == itemView.ID 
       orderby itemTaxonomy.Taxonomy.Name 
       select itemTaxonomy; 

을 이상 명시 적으로 : 시도

당신이 경우
IQueryable<ItemTaxonomy> iTaxonomy = ... 

는 단일 항목을 원하는, ,First() 또는 .Single()를 사용합니다.