通过 Linq 在 C# 中使用嵌套字典作为键遍历嵌套字典

Traverse over a nested Dictionary using the nested dictionary as key in c# via Linq

所以我有以下情况:

我有这样的字典:

Dictionary<Dictionary<string, string>, DateTime> expireDates = new Dictionary<Dictionary<string, string>, DateTime>();

其中内部字典的第一个字符串由一个值填充(我们称之为文章编号),第二个字符串由一个名为 articleCode 的值填充。它们一起是获得我需要的首选 DateTime 的关键。

我尝试在 WCF 服务中像这样通过 Linq 获取 DateTime:

var cmps= dbComponents.Select(component => new WCFObjects.Contracts.Component()
            {
                ArticleNumber = component.ArticleNumber,
                Sortiment = component.SortimentsCode,
                ... //irrelevant values
                //PSEUDOCODE, NOT WORKING
                 ExpireDate = expireDates.Where(x => x.Value.Where(y => x.Key.Where(
                    z => z.Key == component.ArticleNumber
                        && z.Value == component.SortimentsCode))).FirstOrDefault()

            }).ToList();

但我正在努力创建首选的 linq 查询以获取值,其中键 == articlenumber 和值 == sortimentscode。我尝试了几种方法,其中大多数都给我错误

Error 'System.DateTime' does not contain a definition for 'Where' and no extension method 'Where' accepting a first argument of type 'System.DateTime' could be found (are you missing a using directive or an assembly reference?)

但我想不通,希望有人能帮我解决这个问题。

此致, 复原

尝试

ExpireDate = expireDates.Where(
    x => x.Key.Any(
        y => y.Key == component.ArticleNumber && y.Value == component.SortimentsCode)
).Select(z => z.Value).FirstOrDefault()