ViewModel을 사용하여 partialview에서 트리 뷰 메뉴 컨트롤을 바인딩하려고합니다. 네비게이션 트리 메뉴에 필요한 모든 중첩 된 데이터를 한 번에 전달할 수 있다고 가정하고 중첩 된 방식으로 데이터를 가져 오기 위해 linq 쿼리를 작성한 것으로 가정하여 중첩 된 viewModel을 만들었습니다. 초보자로서 나는 이것이 올바른 방법임을 100 % 확신하지 못했습니다. Linq 쿼리 결과로 내 뷰 모델을 바인딩하려고합니다. 내 모델이 중첩되어 있고 내 Linq 쿼리도 마찬가지입니다. 이 두 가지를 함께 성형하는 데 어려움을 겪고 있습니다. 지금까지 어떤 방법 나는 그런 내 코드 .. 컬렉션은 IList에 유형 IQueriable에서 변환 할 수있는 타입 캐스팅 오류가 발생하고 시도 :ASP.Net MVC - LINQ 쿼리 결과를 ViewModel으로 캐스팅 할 수 없습니다.
// ViewModel
namespace My.Namespace
{
public class MyViewModel
{
public decimal CategoryID { get; set; }
public string CategoryName { get; set; }
public decimal Badge { get; set; }
public IList<SubCategories> CategorySubCategories { get; set; }
}
public class SubCategories
{
public decimal SubCategoryID { get; set; }
public string SubCategoryName { get; set; }
public decimal Badge { get; set; }
public List<Items> SubCategoryItems { get; set; }
}
public class Items
{
public decimal ID { get; set; }
public string ItemName { get; set; }
public List<SubItems> SubItems { get; set; }
}
public class SubItems
{
public decimal ID { get; set; }
public string SubItemName { get; set; }
}
}
//Databinding code:
MyViewModel result = new MyViewModel();
var query= (List<MyViewModel>)(from c in dbContext.TableName
where c.CHILD_ID == 0
select new MyViewModel
{
CategoryID = c.ELEMENT_ID,
CategoryName = c.CHILD_DESC,
CategorySubCategories = (List<SubCategories>)(from s in dbContext.TableName
where s.PARENT_ID == c.ELEMENT_ID
select new SubCategories
{
SubCategoryID = s.ELEMENT_ID,
SubCategoryName = s.CHILD_DESC,
SubCategoryItems = (List<Items>)(from i in dbContext.TableName
where i.PARENT_ID == s.ELEMENT_ID
select new Items
{
ID = i.ELEMENT_ID,
ItemName = i.CHILD_DESC
}
)
}
)
});
return query.toList();
내가 점점 오전 오류가 @ 라인입니다 : var에 쿼리 = (목록) (., 뷰 모델에 유형의 객체 System.Data.Entity.Infrastructure.DbQuery 1[MyViewModel]' to type 'System.Collections.Generic.List
1 MyViewModel] '
select 문의 끝에 ToList()를 추가하십시오. –
@Andrei, 나는 그랬고 같은 오류가 발생했습니다. 'System.Collections.Generic.List'1'형식으로 'System.Linq.IQueryable'1'형식을 형 변환 할 수 없습니다. LINQ to Entities는 EDM 프리미티브 또는 열거 형을 캐스팅하는 기능 만 지원합니다. – Hasteq
시도해 보았습니다 var query = 모든 레벨의 주물을 제거하고 모든 레벨에서 .ToList()를 추가하여 다음 오류가 발생했습니다. LINQ to Entities가 'System.Collections.Generic .List'1 [SubCategories] ToList [SubCategories] (System.Collections.Generic.IEnumerable'1 [SubCategories]) '메서드이며이 메서드는 저장소 식으로 변환 할 수 없습니다. – Hasteq