我有一个List<Dictionary<String, String>> dictionaries。每个词典将包含以下键-WAPSystemCodeSubSystemCodeSystem属于WAP,而Subsystem属于System。您可能会看到的数据示例如下:

WAP | System | Subsystem
-------------------------
01  | 01     | 01
01  | 02     | 02
02  | 01     | 01
02  | 01     | 02
02  | 03     | 02
03  | 02     | 01


我本质上想得到以下内容:


所有WAP代码的明确列表。

我认为var waps = dictionaries.Select(d => d["WAP"]).Distinct();应该为此工作。
每个WAP代码的所有系统代码的明确列表。

以下应该工作:

var dictionaryGroups = dictionaries.GroupBy(d => d["WAP"]);

foreach (var dictionaryGroup in dictionaryGroups )
{
   var wapNo = dictionaryGroup.Key;
   var systemCodes = dictionaryGroup.Select(d => d["SystemCode"]).Distinct();
   ...
}

每个WAP代码的每个系统代码的所有子系统代码的明确列表。

不确定这一点。


有人可以帮我解决最后一个吗?并且随时让我知道是否还有更好的方法来进行前两个操作。

最佳答案

// linq expression
var dist = from d in dictionaries
           group d by new { WAP = d["WAP"], System = d["System"] } into g
           select g.FirstOrDefault();

//lambdas
var dist = dictionaries
              .GroupBy(d => new { WAP = d["WAP"], System = d["System"] })
              .Select(g => g.FirstOrDefault())

10-08 00:14