从SOAP API(wsdl)中,我得到的列表包含Ids和数量的结果,如下所示:
[0] Id: "000123-12B024", Qty: "20"
[1] Id: "000123-12B025", Qty: "30"
等等...返回的结果都是字符串,Id和Qty。
现在,我希望将ID解析为前六个符号(以“-”签名),然后对ID进行分组并求和。因此,示例的结果将是:
[0] ID:“ 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('-')
避免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))
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句