C# 从Linq查询表达式返回的数组数据不正确
请看下面的代码,在第9行,我正在计算一些向前移动的日期,所以我使用C# 从Linq查询表达式返回的数组数据不正确,c#,linq,C#,Linq,请看下面的代码,在第9行,我正在计算一些向前移动的日期,所以我使用AddDays方法,但作为回报,我得到所有行的所有日期都相同 如果我这样做AddDays(6),那么它通过将所有日期移动6天来正确返回 在这一点上,根据我的逻辑,我应该如何增加天数呢 [DataContract] public class JQGridRow { [DataMember] public long id; [DataMember] public
AddDays
方法,但作为回报,我得到所有行的所有日期都相同
如果我这样做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();
[DataContract]
公共类JQGridRow
{
[数据成员]
公共长id;
[数据成员]
公共对象[]单元;
}
var sortedItems=invBatch.ListOfItems.OrderBy(i=>i.RunDateIndex)//这将返回IEnumerable列表
DateTime startDate=DateTime.Parse(lblStartDate.Text);
JQGrid.JQGridRow[]行数据=(
从我开始
选择newjqgrid.JQGridRow(){
id=i.id,
单元格=新字符串[]{
i、 ID.ToString(),
i、 Status.ToString(),
i、 状态标题,
i、 RunDate.AddDays((startDate.Subtract(i.RunDate)).Days+1.ToString(实用程序.DATE\u格式),
//在上面的行中,数组为此行的所有列返回相同的值
i、 StartTimeString,
i、 EndTimeString,
i、 EndTime.ToString(),
}}).ToArray();
在开始日期之后的第二天,日期都是相同的,因为您是这样计算的
i.RunDate.AddDays((startDate.Subtract(i.RunDate)).Days+1)
四舍五入到全天,计算RunDate+(startDate RunDate+1)=startDate+1i.RunDate
无关紧要。这些日期在开始日期之后的第二天都是相同的,因为您是这样计算的
i.RunDate.AddDays((startDate.Subtract(i.RunDate)).Days+1)
四舍五入到全天,计算RunDate+(startDate RunDate+1)=startDate+1i.RunDate
不重要。根本不清楚您想做什么,也不清楚为什么您觉得调用DateTime是一个好主意。反复解析
而不是只解析一次。。。一个简短但完整的程序,去掉了所有你不感兴趣的东西,这会使问题更清楚。很抱歉,我没有更清楚地问我的问题,我想要一个数组,它包含一个ID
&行集合
。现在,对于每一行,我希望日期向前移动xyz天。根本不清楚您想做什么,也不清楚为什么您觉得调用DateTime是个好主意。反复分析,而不是只分析一次。。。一个简短但完整的程序,去掉了所有你不感兴趣的东西,这会使问题更清楚。很抱歉,我没有更清楚地问我的问题,我想要一个数组,它包含一个ID
&行集合
。现在,对于每一行,我希望日期向前移动xyz天。没有日期是不一样的,看看我是否这样做i.RunDate.AddDays(6.days)
,如果sortedItems
包含4行,我会得到4行不同的日期,这些日期被添加,即向前移动6天。是,因为当你加上6天,你不会减去原来的日期。rundate rundate=0,因此始终只使用startdate@FosterZ:如果只指定常量6,则日期将不同。你来这里的目的是什么?@pinusnegra:我不明白你的意思,请解释一下more@FosterZ好的,一个例子(让我们忘记这些是日期时间):runDate=2,startDate=5。您可以这样做:runDate+(startDate-runDate+1),所以:2+(5-2+1),也就是6。获取另一个runDate:runDate=3。3 + (5 - 3 + 1) = 6. 明白了吗?没有日期是不一样的,看看我是否这样做i.RunDate.AddDays(6.Days)
,如果sortedItems
包含4行,我会得到4行不同的日期,这些日期会被添加,即转发6天。是的,因为当添加6天时,不会减去原始日期。rundate rundate=0,因此始终只使用startdate@FosterZ:如果只指定常量6,则日期将不同。你来这里的目的是什么?@pinusnegra:我不明白你的意思,请解释一下more@FosterZ好的,一个例子(让我们忘记这些是日期时间):runDate=2,startDate=5。您可以这样做:runDate+(startDate-runDate+1),所以:2+(5-2+1),也就是6。获取另一个runDate:runDate=3。3 + (5 - 3 + 1) = 6. 知道了?