当sum中的表达式为字符串时,如何在linq中分组并求和?

丹妮

从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();

我不知道如何转换或转换

奥斯曼D.

首先,您可以将要分割的字符直接传递给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().idids.Key; 至于解析字符串,只需执行即可ids.Sum(a => int.Parse(a.qty))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在正则表达式模式下不在clojure中分割字符串

SUM评估为false时,报表生成器表达式返回字符串

如何从linq表达式获取字符串?

如何在java中为包含管道符号的字符串编写正则表达式?

如何在VB6中将串联字符串评估为索引XPath表达式

如何在记事本++正则表达式中为字符串添加引号

如何在linq列表中分组并在c#linq中连接一些字符串

如何在正则表达式中对char使用“ lookaround”时捕获整个字符串?

如何使用正则表达式或linq替换C#中的特定字符串

如何在golang正则表达式中匹配字符或字符串结尾?

如何在正则表达式中以特定字符开头的字符串匹配

如何在包含某些字符的字符串中匹配正则表达式?

如何在JSF中的EL表达式#{}中写入硬编码的字符串值?

如何在bigquery中的字符串中获取正则表达式的匹配计数?

如何在PostgreSQL中的字符串中获取正则表达式匹配的位置?

如何从字符串中获取qql表达式

角度表达式中的数字等于0时如何显示空字符串

在正则表达式中搜索模式时如何忽略特定的字符串?

如何在bash脚本中根据正则表达式拆分字符串

如何在posgres中通过正则表达式拆分字符串

如何在正则表达式中匹配字符串后跟重复模式?

如何在正则表达式的冷融合中获取特定字符串的值

如何在Clojure中定义多个正则表达式拆分字符串?

如何在python中以不同顺序正则表达式搜索字符串

如何在基于正则表达式的文件文本中替换字符串?

如何在Python中使用正则表达式从字符串中抽出时间?

如何在C ++中获取正则表达式的基础字符串?

如何在正则表达式的MongoDB中搜索与给定字符串的匹配?

如何在正则表达式中匹配字符串的开头/结尾?