您可以使用 linq 执行以下操作:
var p_sum =
from p_col in datagrid
group p_col by p_col.datagrid_p_f_column into g
select g.Sum(p => p.datagrid_value_column) };
对 F 做同样的事情,然后在两个变量上用一个简单的更小、更大或最大值来显示更大的值
首先不要学习linq。它会让你的生活更轻松 :) 这是官方的101 linq 示例。
假设我有一个名为 的类ExtraStringDataPoint
,定义如下:
public class ExtraStringDataPoint : IDataPoint
{
public ExtraStringDataPoint(double x, double y , string s)
{
X = x;
Y = y;
Extra = s;
}
public double X { get; set; }
public double Y { get; set; }
public string Extra { get; set; }
}
现在我收集了这些要点:
List<ExtraStringDataPoint> MyList = new List<ExtraStringDataPoint>()
{
new ExtraStringDataPoint(10,10,"ten"),
new ExtraStringDataPoint(20, 20, "twenty"),
new ExtraStringDataPoint(30,30, "thirty")
};
您可以使用 linq 将所有点的 Y 值相加,其中 X 值大于 15,例如:
var bigger_than_15 = from point in MyList
where point.X > 15
select point;
var total_y = bigger_than_15.Sum(point => point.Y);
所以,回到你的情况。Linq 将根据您的数据网格将包含名称(P 或 F)的列分组到一个组中。p_col
是一个临时变量,datagrid_p_f_column
应该是列名(或对象中的属性,相同)。分组完成后,它将对所有值求和。在您的情况下 each p
,它将求和p.datagrid_value_column
,这应该是保存您的数值的列的名称。最后,p_sum
将获得名称所在行的值的总和p
。冲洗并重复f
。比较一下,就是这样。