我有一个Excel数据列表,我想对其进行查询。我希望epplus在第一列中标识复制的数据,并对复制字段中第二列中的值求和。如果这是我的数据:
Name Value
Ali 12
Hasan 4
Hasan 3
Ali 3
我想用epplus做到这一点:
Name Value
Ali 15
Hasan 7
我找到了Select multiple fields group by and sum,但是使用epplus并没有做到这一点。谁能帮我?这是我在epplus中的代码。
string fileman = Path.Combine(Path.GetTempPath(), "MyExceldata.xlsx");
using (ExcelPackage package = new ExcelPackage(new FileInfo(fileman)))
{
ExcelWorksheet sheet = package.Workbook.Worksheets["Data"];
for (int i = 1; i <= sheet.Dimension.Rows, i++)
{
//column of name //--running my query in epplus
sheet.Cells[i,1].Value
//column of value //--running my query in epplus
sheet.Cells[i, 2].Value
}
//--running my query in epplus
package.Save();
}
答案 0 :(得分:1)
链接的答案为您提供了所需的信息,但是也许我们需要在上面您看到的特定上下文中查看它。
让我们定义一个类来保存您的模型:
class Item {
public string Name {get;set;}
public int Value {get;set;}
}
然后,根据您的问题,我们将获得示例数据列表:
var items = new List<Item>{
new Item { Name = "Ali", Value = 12 },
new Item { Name = "Hasan", Value = 4 },
new Item { Name = "Hasan", Value = 3 },
new Item { Name = "Ali", Value = 3 }
};
我们可以运行的LINQ查询执行以下操作:
var grouped = items.GroupBy(g => g.Name)
.Select(s => new Item
{
Name = s.Key,
Value = s.Sum(x => x.Value)
});
也就是说:
Item
如果我们检查grouped
的内容,它将包含:
Name Value
---- -----
Ali 15
Hasan 7