2012-02-05 4 views
1

나는 DataColumnDateTime 데이터 형식을 가지고 있으며 내림차순으로 내림차순으로 달에 이어 내림차순으로 주문하고 싶습니다. 모두 YearMonth가 INT 데이터 유형이기 때문에 날짜 부분으로 주문하는 방법?

table.AsEnumerable() 
    .OrderByDescending(o => o.Field<DateTime>("MaxDateTaken").Year) 
    .ThenByDescending(o => o.Field<DateTime>("MaxDateTaken").Month) 

내가 잘못된 캐스팅 오류,하지만 난 <>

어떤 아이디어에 DateTime를 지정하고 있습니다 :

는 여기에 내가 시도 무엇인가?

+0

내림차순으로 DateTimes를 주문하는 경우 원하는대로 원하는대로 년순으로, 월별로 주문할 수 있습니까? – DOK

+0

@DOK - 그냥 일년 단위로 정렬하지 않고 일별로 정렬하고 싶습니다. –

답변

3

그 이유 때문에 캐스팅 오류가 발생하지 않아야합니다. 해당 필드가 이 실제로이고 DateTime일까요?

그것은 당신이 정말로 그냥 주어진, 어쨌든

table.AsEnumerable() 
    .OrderByDescending(o => o.Field<DateTime>("MaxDateTaken")) 

을 원하는 같은 소리 그 해에 의해 주문과 달의 하강은 기본적으로 함께 아무것도하지 않는 것을 제외하고, 날짜 내림차순으로 주문된다 " 하루 "부분. 당신은 정말로 당신의 주문에 "하루"부분을 포함하고 싶지 않습니까?

+0

아, 지금은 문자열 같아 ... 네 말이 맞아. 나는 그것을 OrderByDescending() 호출 내에서 DateTime 유형으로 변환해야한다고 생각한다. –

+1

@ subt13 : 분명히 설명 할 수 있습니다. 소스의 데이터 유형을 * 가능 * 변경할 수 있으면 클라이언트에서 파싱하는 것보다 훨씬 더 깔끔한 데이터가 될 수 있습니다. 이는 다른 확실한 가능성입니다. –

+0

불행히도 동적 피벗 쿼리의 일부로 SQL 서버에서 내려오고 있으므로 형식을 변경할 수 없습니다. –

0

나는 이런 식으로 고정 :

table = table.AsEnumerable() 
    .OrderByDescending(o => DateTime.Parse(o.Field<string>("MaxDateTaken")).Year) 
    .OrderByDescending(o => DateTime.Parse(o.Field<string>("MaxDateTaken")).Month) 
1

왜 날 부분을 무시하는거야?

table = table.AsEnumerable() 
    .OrderByDescending(o => DateTime.Parse(o.Field<string>("MaxDateTaken"))) 
+0

예, 이상한 사례라고 생각합니다. 나는 일 부분이 종류에 영향을 미치기를 원하지 않는다. 이런 식으로 주문할 구체적인 비즈니스 규칙이 있습니다. 그게 이유야. –

관련 문제