【发布时间】:2021-01-17 13:46:50
【问题描述】:
我有这本字典Dictionary<string, List<Payments>>,其中包含员工,每个员工都有一个付款清单。 Payments 类有一个名为 PayCategoryId 的字符串属性。我想过滤这本字典,只获取具有某些特定 PayCategoryId 值的付款的员工,并且对于每个员工只有这些付款。我很确定这可以通过使用 LINQ 来实现,但我对 LINQ 的经验几乎为零,所以需要你的帮助。
原始(未过滤)字典有 76 个项目(员工)。我将用作示例的员工有 27 笔付款,其中一些具有所需的 PayCategoryId。
我做了什么:
- 具有所需 PayCategoryId 的列表:
var payCategoriesID = new List<string> (){ "a", "b", "c" };
- 使用此 LINQ 对字典进行半过滤(我敢肯定它是一团糟,但它正在工作!):
var result = dict.Where(o => o.Value.Where(x => payCategoriesID.Contains(x.PayCategoryId)).Any()).ToDictionary(mc => mc.Key, mc => mc.Value);
- 半过滤结果字典只有 34 项。没有使用所需 PayCategoryId 付款的员工被过滤掉。但是我的示例员工仍然在列表中拥有所有 27 笔付款。我也需要过滤他的列表,并且只有 PayCategoryId = payCategoriesID 列表中的 ID 之一的付款。 当然,示例员工只是一个示例,所有员工都应该被过滤掉。
你能帮忙吗?
阿德里安
【问题讨论】:
标签: c# list linq dictionary