从数据表colmns计算平均值

时间:2017-05-01 00:31:55

标签: c# linq datatable

尝试操纵以下数据表中的数据,以便我计算平均值。

我想在PktsRecieved(XAxis)和PktsRecieved(YAxis)中添加所有数据并计算平均值

我应该使用Linq查询还是最好的方法

由于

List<string[]> rows = File.ReadAllLines(@"E:\\Final Year\\Uni\\NoCAnalysisTool2\\rx.csv")
   .Select(x => x.Split(','))
   .ToList();

DataTable dt = new DataTable();

dt.Columns.Add("Source|Destination");
dt.Columns.Add("PktsRecieved(XAxis)");
dt.Columns.Add(" ");
dt.Columns.Add("Source|Destination ");
dt.Columns.Add("PktsRecieved(YAxis)");
dt.Columns.Add("");
dt.Columns.Add("");
dt.Columns.Add("");


rows.ForEach(x => { dt.Rows.Add(x); });
dataGridView2.DataSource = dt;

1 个答案:

答案 0 :(得分:0)

好吧,如果我正确地阅读它,你最大的问题可能是数据是字符串。在我的头顶,我建议这样的事情:

double averageXAxis = rows.Average( (r) => double.Parse(r[1]) );

(请原谅我,如果语法不完全正确 - 我现在正在没有VS的情况下徒手打字。)

但就像我说的那样,你可能会遇到一个问题,你的数据在技术上是来自.CSV的字符串格式 - 这意味着技术上可能有任何东西 - 数字,字母,奇怪的非ascii字符等您可能必须添加其他LINQ语句以将其缩小到仅列中具有可解析值的行。您可能不希望以单个空白/流氓值导致整个代码异常的方式对其进行编码。

编辑:如果您需要对DataTable进行操作而无法访问该行对象?您可以使用AsEnumerable()函数在DataTable上获取行枚举,并使用.Average执行相同类型的LINQ技巧(...)