我需要基于可变长度的复合对项目列表进行分组(即复合键中的项目数因情况而异)。我知道如何按固定数量的字段(使用Tuple
)进行分组,但我不知道如何使分组复合键采用可变长度。我并不是说它应该在同一个“分组阶段”期间改变长度。我想编写一次并动态使用它(一个更好的替代方法是编写将不同数量的字段作为键的i方法。
考虑这个简单的类:
class SimpleItem
{
public string TargetField { get; set; }
public string JoinField { get; set; }
public string InformationField { get; set; }
public string Additional { get; set; }
}
我可以使用以下方法按多个键分组:
var grouped = simpleList.GroupBy(x => new Tuple<string, string>(x.JoinField, x.TargetField))
.ToDictionary(x => x.Key, y => y.ToList());
我怎样才能使这个分组,更具体地说这个 key generation new Tuple<string, string>(x.JoinField, x.TargetField)
,动态的?我可以在复合键中拥有可变数量的字段(在此示例中为 1 到 4)以及不同的字段组合(如果我没记错的话,总共有 12 种可能性)。甚至可能吗?
编辑:我可以自由地将所有字段更改为一个Dictionary<string, string>
,即具有一个存储所有其他先前属性的字典属性。