我有一个通用的dictonary,通过以下方式模板化:
Dictionary<object, IList<ISomeInterface>> dictionary1 = new Dictionary<object, IList<ISomeInterface>>();
如果我想根据任意键(即组成字典的每个键值对的值部分中包含的列表中的项目)省略某些列表项,给定一些任意条件(假设省略列表)列表项包含字符串“abc”)
的项目我希望能够创建/投影到一个新词典中,该词典将包含包含列表的条目,而不包含名称中包含“abc”的项目
如何使用Lambda表达式实现此目的?
我正在尝试这样的事情:
var result1 = dictionary1.Where(x =&gt; x.Value == x.Value.Select(y =&gt;!y.contains(“abc”));
答案 0 :(得分:1)
你想要它作为另一个字典吗?试试这个:
var result = original.ToDictionary(
pair => pair.Key, // Key in result is key in original
value => pair.Value // Value in result is query on original value
.Where(item => !item.Contains("abc").ToList());
编辑:VB根据评论:
someDictionary.ToDictionary(Function(x) x.key, _
Function(y) y.Value.Where(not y.Value contains("abc").ToList())
答案 1 :(得分:0)
var result1 = dictionary1.Select(x =>
{
return new KeyValuePair<object, IList<ISomeInterface>>(
x.Key,
x.Value.Where(y => y.Contains("abc")).ToList());
}).ToDictionary(item => item.Key, item => item.Value);