Visifire Chart 反向循环顺序
Visifire Chart Reversed loop order
我运行一个foreach循环return结果是这样的:
1
2
3
4
5
6
7
8
9
10
但是,我将这些结果作为数据点放在 foreach 中。
但是在页面本身,结果会被交换。
他们是这样出现的:
10
9
8
7
6
5
4
3
2
1
foreach 循环如下所示:
int count = 0;
foreach (DetectorStatu status in loadOperation.Entities.OrderBy(d => d.Status))
{
Detector selectedDetector = status.Detector as Detector;
bool isAtlasFO = selectedDetector.EnabledDetectorTypes.Count(d => d.DetectorTypeID == 1) > 0;
if (isAtlasFO)
{
DataPoint dataPoint1 = new DataPoint()
{
YValue = status.Status * 100.0,
ToolTipText = GetTooltipText(status),
Cursor = Cursors.Hand,
Tag = status.Detector,
AxisXLabel = status.DetectorID.ToString() + " ⚫"
};
DataPoint dataPoint2 = new DataPoint()
{
YValue = DateTimeOffset.Now.Subtract(status.DateTime).TotalHours,
ToolTipText = GetTooltipText(status),
Cursor = Cursors.Hand,
Tag = status.Detector,
AxisXLabel = status.DetectorID.ToString() + " ⚫"
};
dataPoint1.MouseLeftButtonDown += DataPointClicked;
dataPoint2.MouseLeftButtonDown += DataPointClicked;
chart.Series[0].DataPoints.Add(dataPoint1);
chart.Series[1].DataPoints.Add(dataPoint2);
count++;
if (count == 10)
{
break;
}//Break loop when 25 is hit.
}//End if Atlas FO
}//End Foreach loop
Now my question is:
foreach 循环获得与第一个示例相同的结果。但是,数据点会像第二个示例中那样交换它们。
我该如何阻止这种情况发生?
使用当前代码 (Orderby) return是这样的:
使用 OrderbyDescending 它 return 是这样的:
现在我想要的是orderByAscending。但是反过来了。因为现在它在顶部而不是底部显示最好的。
我也不能接受 x(我以前做的),因为现在,我正在使用 if 语句。
例如:
1
2 //
3 //
4 //
5
6
7 //
8
9 //
10
这些是我获取的前 10 个结果(如果我要求的话)。但是后面有//的就是满足我的if语句的。
所以在这种情况下,我拿了 10 个,但只得到 5 个。
这也是为什么我的 foreach 中有一个计数。它计算结果,当我达到 10 时,它打破了循环。
如果 Status
持有该值,则您正在按降序循环,
foreach (DetectorStatu status in loadOperation.Entities.OrderByDescending(d => d.Status))
尝试使用 OrderBy(它将按升序排序)
foreach (DetectorStatu status in loadOperation.Entities.OrderBy(d => d.Status))
编辑:
你可以得到 Ordered 10 并反转它,
foreach (DetectorStatu status in loadOperation.Entities.OrderByDescending(d => d.Status).Where(d=> ((d as DetectorStatu).Detector as Detector).EnabledDetectorTypes.Count(d => d.DetectorTypeID == 1) > 0).Take(10).Reverse())
我运行一个foreach循环return结果是这样的:
1
2
3
4
5
6
7
8
9
10
但是,我将这些结果作为数据点放在 foreach 中。
但是在页面本身,结果会被交换。
他们是这样出现的:
10
9
8
7
6
5
4
3
2
1
foreach 循环如下所示:
int count = 0;
foreach (DetectorStatu status in loadOperation.Entities.OrderBy(d => d.Status))
{
Detector selectedDetector = status.Detector as Detector;
bool isAtlasFO = selectedDetector.EnabledDetectorTypes.Count(d => d.DetectorTypeID == 1) > 0;
if (isAtlasFO)
{
DataPoint dataPoint1 = new DataPoint()
{
YValue = status.Status * 100.0,
ToolTipText = GetTooltipText(status),
Cursor = Cursors.Hand,
Tag = status.Detector,
AxisXLabel = status.DetectorID.ToString() + " ⚫"
};
DataPoint dataPoint2 = new DataPoint()
{
YValue = DateTimeOffset.Now.Subtract(status.DateTime).TotalHours,
ToolTipText = GetTooltipText(status),
Cursor = Cursors.Hand,
Tag = status.Detector,
AxisXLabel = status.DetectorID.ToString() + " ⚫"
};
dataPoint1.MouseLeftButtonDown += DataPointClicked;
dataPoint2.MouseLeftButtonDown += DataPointClicked;
chart.Series[0].DataPoints.Add(dataPoint1);
chart.Series[1].DataPoints.Add(dataPoint2);
count++;
if (count == 10)
{
break;
}//Break loop when 25 is hit.
}//End if Atlas FO
}//End Foreach loop
Now my question is:
foreach 循环获得与第一个示例相同的结果。但是,数据点会像第二个示例中那样交换它们。
我该如何阻止这种情况发生?
使用当前代码 (Orderby) return是这样的:
使用 OrderbyDescending 它 return 是这样的:
现在我想要的是orderByAscending。但是反过来了。因为现在它在顶部而不是底部显示最好的。
我也不能接受 x(我以前做的),因为现在,我正在使用 if 语句。
例如:
1
2 //
3 //
4 //
5
6
7 //
8
9 //
10
这些是我获取的前 10 个结果(如果我要求的话)。但是后面有//的就是满足我的if语句的。
所以在这种情况下,我拿了 10 个,但只得到 5 个。
这也是为什么我的 foreach 中有一个计数。它计算结果,当我达到 10 时,它打破了循环。
如果 Status
持有该值,则您正在按降序循环,
foreach (DetectorStatu status in loadOperation.Entities.OrderByDescending(d => d.Status))
尝试使用 OrderBy(它将按升序排序)
foreach (DetectorStatu status in loadOperation.Entities.OrderBy(d => d.Status))
编辑:
你可以得到 Ordered 10 并反转它,
foreach (DetectorStatu status in loadOperation.Entities.OrderByDescending(d => d.Status).Where(d=> ((d as DetectorStatu).Detector as Detector).EnabledDetectorTypes.Count(d => d.DetectorTypeID == 1) > 0).Take(10).Reverse())