2012-01-28 66 views
0

見我有低於這個下面的代碼,在9號線回來時,我正在計算一些日期向前推進,因此使用AddDays方法IM但作爲回報,我得到的所有日期同爲所有行。不正確的陣列數據從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'多次,而不僅僅是一次......一個簡短而完整的程序,它擺脫了*的一切*你不感興趣會使這個更清晰。 – 2012-01-28 12:22:23

+0

對不起,我沒有更清楚地詢問我的問題,我想要一個包含'ID'和'Collection of Rows'的數組。現在對於每一行我都希望日期能夠按照xyz日期前進。 – FosterZ 2012-01-28 12:31:48

回答

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 2012-01-28 12:34:30

+0

是的,因爲當您添加6天時,您不會減去原始日期。 rundate-rundate = 0,所以你總是隻使用開始日期 – 2012-01-28 12:36:47

+0

@FosterZ:如果你只是指定常量6,是的,日期會有所不同。你在這裏有什麼打算? – kkm 2012-01-28 12:38:57