通过 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()
所以我有以下情况:
我有这样的字典:
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()