我有一个List<Dictionary<String, String>> dictionaries
。每个词典将包含以下键-WAP
,SystemCode
和SubSystemCode
。 System
属于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())