gpt4 book ai didi

c# - 当 sum 中的表达式是字符串时,如何在 linq 中分组和求和?

转载 作者:太空宇宙 更新时间:2023-11-03 12:14:46 25 4
gpt4 key购买 nike

从 SOAP api (wsdl) 我得到了这样的 ID 和数量结果列表:

[0] Id: "000123-12B024", Qty: "20"
[1] Id: "000123-12B025", Qty: "30"

等等...其中返回结果均为string、Id和Qty。

现在我想将 Id 解析为前六个符号(符号“-”)和组 Id 以及总和。因此示例的结果将是:

[0] 编号:“000123”,数量:“50”等等

我的代码是:

var res = _listOfProductIdAndStock.Where(ids => ids.product_sku.Contains(@"-"))
.Select(ids => new { id = ids.product_sku.Split(Convert.ToChar("-"))[0], ids.qty })
/*To here code is fine, so my results is like:
* [0] Id: "000123", Qty: "20"
* [1] Id: "000123", Qty: "30"
* Next I whant to group it by "Id" and sum "qty" field which is string
*/
.GroupBy(ids => ids.id)
.Select(ids => new {ids.FirstOrDefault().id, ids.Sum(a => a.qty)})
// Here I get error in ids.Sum that I cannot convert expression type string to return type ('decimal,int,float etc.)
.ToList();

我不知道如何转换它,或者可能会转换它

最佳答案

首先,您可以将要拆分的字符直接传递给 Split 方法,即
Split('-') 并避免 完全拆分(Convert.ToChar(“-”))

var res = _listOfProductIdAndStock.Where(ids => ids.product_sku.Contains(@"-"))
.Select(ids => new { id = ids.product_sku.Split('-')[0], ids.qty })
.GroupBy(ids => ids.id)
.Select(ids => new { ids.Key,
summation = ids.Sum(a => int.Parse(a.qty))})
.ToList();

那么可以进一步将ids.FirstOrDefault().id简化为ids.Key;至于解析字符串,只需执行 ids.Sum(a => int.Parse(a.qty))

关于c# - 当 sum 中的表达式是字符串时,如何在 linq 中分组和求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50319230/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com