idictionary帮助过滤项目

时间:2011-05-04 14:08:00

标签: c#

是否有更好的方法来编码哪里这个:

    IDictionary<string, string> p = new Dictionary<string, string>();
    p.Add("Apple", "1");
    p.Add("Orange", "2");
    p.Add("Pear", "3");
    p.Add("Grape", "4");
    p.Add("Pineapple", "5");
    //This is a unique list

    var retVal = p.Where(k => k.Key.Contains("Apple") || k.Key.Contains("Pear") || k.Key.Contains("Grape"));

以下的一些历史

我有一个字典字典,如下所示:

IDictionary<string,string>

内容如下:

Apple,1
Orange,2
Pear,3
Grape,4
...many more

我如何只返回我的字典中的一些项目

if (true)
{
  //return only 3 apple,pear&grape items out of the dozens in the list into a new variable
}

3 个答案:

答案 0 :(得分:4)

你可以采取前3项......

theDictionary.Take(3);

或过滤并拍摄特定物品......

string[] itemsIWant = { "Apple", "Pear", "Grape" };

theDictionary.Where(o => itemsIWant.Contains(o.Key));

或随机排序并拍摄3 ...

Random r = new Random();

theDictionary.OrderBy(o => r.Next()).Take(3);

答案 1 :(得分:0)

答案 2 :(得分:0)

这实际上取决于您想要实现的过滤类型。但你可以通过Linq实现它。

如果您只想获得前3个项目,可以这样做:

theDictionary.Take(3);

如果你想获得以'G'开头的前3个项目,你将会这样做:

theDictionary.Where(kv => kv.Key.StartsWith("G")).Take(3);

如果你想获得以'G'开头的前三个项目,无论是否套管,你都会这样做:

theDictionary.Where(kv => kv.Key.ToLower().StartsWith("g")).Take(3);

最后但并非最不重要的是,如果你想随机获得3件物品,你会这样做:

Random rand = new Random();
theDictionary.OrderBy(kv => rand.Next()).Take(3);