C# 商店和集团<;键>;基于<;价值>;在所有字典记录中,<;价值>;匹配X
我有一本C# 商店和集团<;键>;基于<;价值>;在所有字典记录中,<;价值>;匹配X,c#,linq,C#,Linq,我有一本字典,客户信息,它存储客户ID(键)|年龄(值) 获取不同的年龄(值) 根据每个不同的Age(值)将匹配的CustomerID(键)添加到数组/列表/其他类型中 foreach (var CustomerInfo_Dict_DistinctAge in CustomerInfo_Dict.Values.Distinct()) { foreach (var CustomerInfo in CustomerInfo_Dict) { //if (Cu
字典
,客户信息
,它存储客户ID(键)|年龄(值)
年龄(值)
Age(值)
将匹配的CustomerID(键)
添加到数组/列表/其他类型中
foreach (var CustomerInfo_Dict_DistinctAge in CustomerInfo_Dict.Values.Distinct())
{
foreach (var CustomerInfo in CustomerInfo_Dict)
{
//if (CustomerInfo <Value>:Age) == (CustomerInfo_Dict_DistinctAge <Value>:Age)
{
//add matched `CustomerID (Key)` to a separate List
}
}
}
foreach(CustomerInfo_Dict_Dict.Values.Distinct()中的var CustomerInfo_Dict_DistinctAge)
{
foreach(CustomerInfo_Dict中的var CustomerInfo)
{
//if(CustomerInfo:Age)=(CustomerInfo_Dict_DistinctAge:Age)
{
//将匹配的'CustomerID(Key)`添加到单独的列表中
}
}
}
var ageToIdsGrouping = idToAge
.GroupBy(kvp => kvp.Value, kvp => kvp.Key);
这会给你一个GroupedEnumerable,如果你列举它,它就像一本字典;作为分组的集合,每个分组都有一个键(即年龄),并且本身是可枚举的整数(即ID)
如果您以前有过此功能:
idToAge[123] = 30;
idToAge[234] = 30;
idToAge[345] = 30;
idToAge[456] = 31;
你应该有这个:
ageToIds[30] = { 123, 234, 345 };
ageToIds[31] = { 456 };
要获取所有列表,请执行以下操作:
foreach(var kvp in ageToIds){
int age = kvp.Key;
List<int> ids = kvp.Value;
}
foreach(ageToIds中的var kvp){
int age=kvp.Key;
列表ID=kvp.Value;
}
所以你想交换你的字典?创建一个映射年龄的字典->具有该年龄的ID列表?谢谢!我正在尝试你的非LINQ版本。我看到,如果键中没有匹配项,您已将值添加到新列表中。运行后,我是否通过foreach(idToAge中的var kvp)
循环每个键来检索所有agetoid[kvp.Value]
创建的列表,从而获取所有创建的列表*抱歉,我的意思是说,我想不出在运行上述操作之后获取所有创建列表的方法。
idToAge[123] = 30;
idToAge[234] = 30;
idToAge[345] = 30;
idToAge[456] = 31;
ageToIds[30] = { 123, 234, 345 };
ageToIds[31] = { 456 };
foreach(var kvp in ageToIds){
int age = kvp.Key;
List<int> ids = kvp.Value;
}