C# Visifire图表反向循环顺序
我正在运行foreach循环,返回如下结果:C# Visifire图表反向循环顺序,c#,wpf,xaml,silverlight,C#,Wpf,Xaml,Silverlight,我正在运行foreach循环,返回如下结果: 1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1 int count = 0; foreach (DetectorStatu status in loadOperation.Entities.OrderBy(d => d.Status)) { Detector selectedDetector = status.Detector as Detector; bool isAtlasFO = s
1
2
3
4
5
6
7
8
9
10
10
9
8
7
6
5
4
3
2
1
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
但是,我将这些结果作为数据点放在foreach中。
但在页面本身,结果会被交换。他们的表现如下:
1
2
3
4
5
6
7
8
9
10
10
9
8
7
6
5
4
3
2
1
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
foreach循环如下所示:
1
2
3
4
5
6
7
8
9
10
10
9
8
7
6
5
4
3
2
1
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
现在我的问题是:
foreach循环得到的结果与第一个示例相同。但是,数据点交换它们,如第二个示例中所示
我该如何阻止这种情况发生
使用当前代码(Orderby)返回以下内容:
使用降序排序返回以下内容:
现在我想要的是OrderBy升序。但情况正好相反。因为现在它在顶部而不是底部显示最好的
另外,我不能接受x(我以前做的),因为现在我使用的是if语句
例如:
1
2 //
3 //
4 //
5
6
7 //
8
9 //
10
这是我得到的前10个结果(如果我要求的话)。但是后面有//的是符合我的if语句的
所以在这种情况下,我取10,但只取5。这也是为什么我的foreach中有一个count。它计算结果,当我点击10时,它打破循环。如果
状态
保持该值,则按降序循环
foreach (DetectorStatu status in loadOperation.Entities.OrderByDescending(d => d.Status))
尝试使用OrderBy(它将按升序排序)
编辑:
你可以得到订购的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())
什么是地位?这就是您的订单详细信息吗?状态从0,01变为1。基本上,我在问题中展示的是有序的,但随后是更大的数字:)foreach(loadOperation.Entities.OrderByDescending(d=>d.status)){……你能试试OrderByAscending吗?当我这样做时,它会显示我给出的示例中的结果。我希望它从坏(顶部)变为好(底部)但是,它从坏(底部)到好(顶部)在我的问题中进行了编辑。你还可以看到两个完全不同的图像。这是因为我只抓取了10个结果,而这样做时可能有20多个结果,它给我的结果与图中显示的结果相同。它从坏(底部)到好(顶部)。问题是,foreach以正确的顺序给出结果。但我认为发生的是,第一个结果变成了一个数据点并被放置。然后第二个结果来了,也变成了一个数据点。但是被放置在第一个结果的顶部。但是我不知道如何解决这个问题。@Mitch你能将数据点存储到分离集合,最后将其反转,然后分配给图表系列?并查看我的编辑。让我们来看看。