从KeyValuePair列表中接收对象列表的最佳方法?

时间:2011-06-23 10:39:47

标签: c# list lambda key-value

我有一个KeyValuePairs列表,我想根据键值过滤它,所以最终我会得到一个过滤的值列表(意思是 - 不包含原始列表中的所有值)。 / p>

我想也许最好的方法是某种形式的Lambda表达,但我不知道如何实现它。 谢谢, 阿龙

3 个答案:

答案 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" }