2012-01-28 2 views
0

아래 코드가 있습니다. 앞으로 이동하려면 일부 날짜를 계산 중이므로 AddDays 메서드를 사용하지만 반환 값으로 모든 날짜가 동일합니다. 모든 행.Linq 쿼리 식에서 잘못된 배열 데이터가 반환됩니다.

이 경우 AddDays(6)과 같이하면 모든 날짜를 6 일만 이동하면 올바르게 반환됩니다.

이 시점에서 내 논리에 따라 날짜를 추가하려면 어떻게해야합니까?

[DataContract] 
public class JQGridRow 
    { 
     [DataMember] 
     public long id; 
     [DataMember] 
     public object[] cell; 
    } 
    var sortedItems = invBatch.ListOfItems.OrderBy(i => i.RunDateIndex);//This will return IEnumerable<Class> List 

DateTime startDate = DateTime.Parse(lblStartDate.Text); 
JQGrid.JQGridRow[] rowData = (
     from i in sortedItems 
     select new JQGrid.JQGridRow() { 
     id = i.ID, 
     cell = new string[] { 
     i.ID.ToString(), 
     i.Status.ToString(), 
     i.StatusTitle, 
     i.RunDate.AddDays((startDate.Subtract(i.RunDate)).Days+1).ToString(Utility.DATE_FORMAT), 
     //Here in above line the array returning same values for all columns of this row   
     i.StartTimeString, 
     i.EndTimeString, 
     i.EndTime.ToString(), 
     }}).ToArray(); 
+2

당신이하려고하는 것이 무엇인지 명확하지 않거나, 단지 한 번이 아닌'DateTime.Parse'를 반복적으로 호출하는 것이 좋은 생각이 들지 않는 이유는 ... 짧지 만 완전한 모든 프로그램을 제거한 프로그램 * 당신이 관심을 가지지 않는다면 훨씬 더 명확해질 것입니다. –

+0

나는 내 질문을 더 명확하게 묻지 않아서 미안하다. 나는'ID'와'Collection of Rows'를 포함하는 배열을 원한다. 이제 각 행마다 날짜가 xyz 일 앞으로 이동하기를 원합니다. – FosterZ

답변

3

날짜는 모두 동일하고 같은를 계산하기 때문에 startDate 후 다음 날 동일. 하루에 라운딩

i.RunDate.AddDays((startDate.Subtract(i.RunDate)).Days+1) 

, 당신이 계산 RunDate + (startDate를-RunDate + 1) =의 startDate + 1 i.RunDate 문제가되지 않습니다.

+0

날짜가 같지 않다면,'i.RunDate.AddDays (6) .Days)'와'sortedItems'에 4 개의 행이 있다고 가정하면 다른 날짜의 4 개의 행을 얻고 그 날짜가 추가됩니다. 6 일까지 전달됩니다. – FosterZ

+0

예, 6 일을 추가하면 원래 날짜를 빼지 않기 때문입니다. rundate-rundate = 0이므로 항상 시작일에만 작업합니다. –

+0

@FosterZ : 상수 6을 지정하면 예, 날짜가 달라집니다. 여기에 당신의 의도는 무엇입니까? – kkm