我有以下场景 - 作为词典中键的父项列表及其子项,即值。
所以我的字典看起来像这样 - Dictionary<ParentModel,List<ChildModel>>
我有第二个包含这样的字典 - Dictionary - 其中键是一个实际映射到我的ChildModel
类中的属性的整数值,并且该值是基于是否设置为true或false或不是我想在我的过滤器中使用密钥。
所以我想要做的就是在我的词典中获取一个ParentModel列表,当他们键入值时,不会有任何子句的id与第二个词典中的键匹配为真。
伪代码 -
Dictionary<ParentModel, List<ChildModel>> parentDictionary;
Dictionary<int, bool> selectedChildIds;
parentDictionary.Where(x => !x.Value.Exists(y => selectedChildIds.Where(z => z.Value).Any(d => d.Key == y.SomeProperty)))
显然代码错了,所以我正在寻找有关如何使用Linq实现目标的帮助。
提前感谢您的帮助!
答案 0 :(得分:4)
所以你想要所有的子键对,其中所有子元素的属性要么不作为另一个字典中的键存在,要么相应的值是false
?
var result = parentDictionary
.Where(kv => kv.Value
.All(c => !selectedChildIds.ContainsKey(c.SomeProperty)
|| !selectedChildIds[c.SomeProperty]));
答案 1 :(得分:0)
要求:
selectedChilds.Value = true
Dictionary<ParentModel, List<ChildModel>> parentDictionary;
Dictionary<int, bool> selectedChildIds;
var result = parentDictionary.Where(x => !x.Value.Any() &&
selectedChildIds.ContainsKey(x.Key.SomeProperty) && //x.Key.Id?
selectedChildIds.Value).Select(x => x.Key).ToList();
答案 2 :(得分:0)
websocket = new WebSocket("ws://localhost:8080/myApp/myHandler");