【发布时间】:2019-01-24 10:01:06
【问题描述】:
我有 2 个项目的列表,型号和数量。我正在尝试使用 Linq 获取 qty 的总和,但在 ModelList.Add(item.qty); 处收到以下错误; “无法从 int 转换为字符串。 我需要它是一个整数,以便在下面的 GroupBy 语句中获得 Sum。我做错了什么?
[{“扇区”:“3”,“位置”:“3”,“数量”:“1”,“型号”:“SBNHH-1D65C” },{"sector": "1","position": "4","qty": "3","model": "SDFVR-U34R"}]
namespace Antenna
{
public static class Rfds
{
public class Antenna
{
public AntennaItems[] root { get; set; }
}
public class AntennaItems
{
public int sector { get; set; }
public int position { get; set; }
public int qty { get; set; }
public string model { get; set; }
}
[FunctionName("AntennaSort")]
public static async Task<IActionResult> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
var jsonexample = requestBody;
var jsonObj = JsonConvert.DeserializeObject<List<AntennaItems>>(requestBody);
List<string> ModelList = new List<string>();
foreach (var item in jsonObj)
{
if (item.model != "" && item.model != null)
{
ModelList.Add(item.model);
ModelList.Add(item.qty);
}
}
var ModelAndCount = ModelList.GroupBy(x => x).ToDictionary(g => g.Key, g => g.Sum());
//var ModelAndCount = ModelList.GroupBy(x => x).ToDictionary(g => g.Key, g => g.Count());
return new OkObjectResult(ModelAndCount);
}
}
}
【问题讨论】:
-
向我们展示
AntennaItems类的代码 -
@Fabjan,代码块中的 2 个元素。
-
我怀疑您可以简化此代码,使其成为minimal reproducible example。例如删除
streamReader并在字符串常量中定义 JSON 值。 这里的关键是让我们可以将它复制并粘贴到控制台应用程序中并运行它——它应该是完全独立的。 -
那么 ModelList 是一个字符串列表,而 item.qty 是一个 int。你也许想要
ModelList.Add(item.qty.ToString());?虽然这似乎有点可疑。 -
您对 ModelAndCount 有什么期望?你每个模型的数量总和是多少?模型出现的次数?