我有一个有很多列的表。 假设我有6列以下。 真正的列数更多
x temp 1 temp 2 temp 3 temp 4 temp 5 temp 6 101 22 102 23 34 103 56 104 34 56 78 98 105 11 106 12 32 43 107 2 5 89 99 101 123
在这个例子中我想总结一下最后一列的值是22 + 34 + 56 + 98 + 11 + 43 + 123
我使用LinqToExcel,但不知道如何做到这一点。
var ff = database.Where(w => BetweenTwoDates(txt_fromDate.Text, w["Time Column"].ToString(), txt_toDate.Text) == true); var grouped = ff.GroupBy(row => row["Sample column"].ToString()); foreach (var g in grouped) { X.Add(g.Key); var temp = g.Where(w => w["Temp "].ToString() != ""); Y.Add(g.Sum(a => (double.Parse(a["Temp"])))); }
将您的IEnumerable转换为DataTable
并尝试此代码,
int _total = 0; foreach (DataRow _dr in dt.Rows) // Looping Rows { int _value = 0; int _colCount = 1; foreach (var _column in _dr.ItemArray) // Looping Columns { if (_column.ToString() != "") { //if column value is not equal to blank , keep assign it to _value _value = Int32.Parse(_column.ToString()); } else { //if column value is equal to blank , sum-up the _total with _value and break column looping and go to next row _total += _value; break; } if (_colCount == _dr.ItemArray.Length) { _total += _value; break; } _colCount++; } }
在这里, dt
是您转换的DataTable
, _total
值将是您所需要的结果。
希望对你有所帮助:)
编辑
这是如何转换为DataTable,
public static DataTable ToDataTable<T>(this IList<T> data) { PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T)); DataTable table = new DataTable(); for(int i = 0 ; i < props.Count ; i++) { PropertyDescriptor prop = props[i]; table.Columns.Add(prop.Name, prop.PropertyType); } object[] values = new object[props.Count]; foreach (T item in data) { for (int i = 0; i < values.Length; i++) { values[i] = props[i].GetValue(item); } table.Rows.Add(values); } return table; }