我有一个KeyValuePairs列表,我想根据键值过滤它,所以最终我会得到一个过滤的值列表(意思是 - 不包含原始列表中的所有值)。 / p>
我想也许最好的方法是某种形式的Lambda表达,但我不知道如何实现它。 谢谢, 阿龙
答案 0 :(得分:5)
试试这个:
var values = list.Where(x => x.Key == "whatever").Select(x => x.Value);
这将只为您提供过滤后的值列表 显然,您可以更改过滤密钥的方式。
答案 1 :(得分:0)
使用以下内容:
var filteredList = list.Where(x => x.Key == "Key");
答案 2 :(得分:0)
您正在寻找LINQ extension methods的某种组合(这取决于您正在尝试做什么)。
例如,如果我有一个水果列表的颜色,并希望得到一个水果是红色的集合,我会做类似的事情:
var fruits = new List<KeyValuePair<string,string>>() {
new KeyValuePair<string,string>("Apple", "Green"),
new KeyValuePair<string,string>("Orange", "Orange"),
new KeyValuePair<string,string>("Strawberry", "Red"),
new KeyValuePair<string,string>("Cherry", "Red")
};
var redFruits = fruits.Where(kvp => kvp.Value == "Red").Select(kvp => kvp.Key);
// this would result in a IEnumberable<string> { "Strawberry", "Cherry" }