c# – 使用LINQ从另一个字典创建一个字典

c# – 使用LINQ从另一个字典创建一个字典,第1张

概述我有一个类型的字典: IDictionary<foo, IEnumerable<bar>> my_dictionary 酒吧类看起来像这样: class bar{ public bool IsValid {get; set;} } 如何创建仅具有IsValid = true的项目的另一个字典. 我试过这个: my_dictionary.ToDictionary( p=> p.Key, 我有一个类型的字典:
IDictionary<foo,IEnumerable<bar>> my_dictionary

酒吧类看起来像这样:

class bar{    public bool IsValID {get; set;} }

如何创建仅具有IsValID = true的项目的另一个字典.

我试过这个:

my_dictionary.ToDictionary( p=> p.Key,p=> p.Value.Where (x => x.IsValID));

上述代码的问题是,如果该键的所有元素都为IsValID = false,那么这将创建一个带有空枚举的键.

例如:

my_dictionar[foo1] = new List<bar> { new bar {IsValID = false},new bar {IsValID = false},new bar {IsValID = false}};my_dictionary[foo2] = new List<bar> {new bar {IsValID = true},new bar{IsValID = false};var new_dict = my_dictionary.ToDictionary( p=> p.Key,p=> p.Value.Where (x => x.IsValID));// Expected new_dict should contain only foo2 with a List of 1 bar item.// actual is a new_dict with foo1 with 0 items,and foo2 with 1 item.

我如何得到我的预期

解决方法 这样的东西
my_dictionary    .Where(p=> p.Value.Any(x => x.IsValID))    .ToDictionary( p=> p.Key,p=> p.Value.Where (x => x.IsValID));

这只会包含至少有一个值IsValID的项目.

总结

以上是内存溢出为你收集整理的c# – 使用LINQ从另一个字典创建一个字典全部内容,希望文章能够帮你解决c# – 使用LINQ从另一个字典创建一个字典所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1237039.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存