gpt4 book ai didi

c# - Linq groupby列表匹配和计数

转载 作者:行者123 更新时间:2023-11-30 23:05:30 25 4
gpt4 key购买 nike

我有一行 json,我反序列化并创建了一个列表列表:

var json = @"[{'names': ['a','b']} ,{'names': ['z','y','j']} ,{'names': 
['a','b']}]";
var json_converted = JsonConvert.DeserializeObject<List<RootObject>>(json);
var namelist = json_converted

我想用linq比较列表内容,看看列表中的项目是否匹配另一个列表

例)

名称......匹配列表计数

列表 {a,b} = 2

列表 {z,y,j} = 1

我尝试了以下方法,但没有成功:/

 var namelist = json_converted
.GroupBy(n => n.names)
.Select(i => new { name = i.Key, Count = i.Count() });

有什么建议吗?

最佳答案

您可以根据以相同顺序获取的列表项生成的字符串 进行分组。假设名称中不允许使用 '|' 字符,您可以这样做:

var namelist = json_converted
.GroupBy(n => string.Join("|", n.names.OrderBy(s => s)))
.Select(g => new {
Name = g.First().names
, Count = g.Count()
});

此方法从列表 ["a", "b"]["b", "a"构造字符串 "a|b" ],并使用该字符串对内容进行分组。

由于键由有序名称组成,因此用作Nameg.First().names 可能与组中所有元素的顺序不同。

关于c# - Linq groupby列表匹配和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48749622/

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