웹 서비스에서 모든 카테고리를 선택하고 싶습니다. webservice에는 메서드가 없으므로 모든 제품을 가져온 다음이 제품이있는 모든 범주를 선택해야합니다. 웹 서비스에서 데이터를 수신하면 WebServiceProduct (ID, Name 등) 및 WebServiceCategory (ID, 이름 등) 객체를 가져올 수 있습니다.클래스, 익명 유형 및 SelectListItem의 Distinct()
IQueryable<SelectListItem> categories = (from p in webserviceProductRepository.GetProducts()
from c in p.Categories
select new SelectListItem
{
Value = c.ID.ToString(),
Text = c.Name
}).Distinct().OrderBy(c => c.Text);
을하지만 먼저 anonymus 유형으로 선택 할 때 작동 :
이 작동하지 않습니다
var foo = (from p in webserviceProductRepository.GetProducts()
from c in p.Categories
select new
{
ID = c.ID.ToString(),
Name = c.Name
}).Distinct().OrderBy(c => c.Name);
IQueryable<SelectListItem> categories = from c in foo
select new SelectListItem
{
Value = c.ID.ToString(),
Text = c.Name
};
나는 또한 확인하기 위해 IEqualityComparer 및 오버라이드 같음과 GetHashCode으로 시도 WebServiceCategory.ID에 있지만 작동하지 않습니다.
내 질문에 왜 Distinct()는 WebServiceCategory 개체 및 SelectListItem보다 익명 형식에서 더 잘 작동합니까?
"... 작동하지 않습니까?" –
별개의 WebServiceCategories가 아니라 모든 WebServiceCategories를 반환합니다. –