Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# idictionary帮助筛选项_C# - Fatal编程技术网

C# idictionary帮助筛选项

C# idictionary帮助筛选项,c#,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 uni

是否有更好的方法对进行编码,其中如下:

    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"));
我如何只返回字典中的一些条目

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

您可以只取前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);

你可以只拿前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);

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

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

Apple,1
Orange,2
Pear,3
Grape,4
...many more
theDictionary.Take(3);
如果要获取以“G”开头的前3项,您将执行以下操作:

theDictionary.Where(kv => kv.Key.StartsWith("G")).Take(3);
theDictionary.Where(kv => kv.Key.ToLower().StartsWith("g")).Take(3);
Random rand = new Random();
theDictionary.OrderBy(kv => rand.Next()).Take(3);
如果您希望获得以“G”开头的前3项,而不考虑大小写,您将执行以下操作:

theDictionary.Where(kv => kv.Key.StartsWith("G")).Take(3);
theDictionary.Where(kv => kv.Key.ToLower().StartsWith("g")).Take(3);
Random rand = new Random();
theDictionary.OrderBy(kv => rand.Next()).Take(3);
最后,但并非最不重要的一点是,如果您想随机获得3个项目,您将执行以下操作:

theDictionary.Where(kv => kv.Key.StartsWith("G")).Take(3);
theDictionary.Where(kv => kv.Key.ToLower().StartsWith("g")).Take(3);
Random rand = new Random();
theDictionary.OrderBy(kv => rand.Next()).Take(3);

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

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

Apple,1
Orange,2
Pear,3
Grape,4
...many more
theDictionary.Take(3);
如果要获取以“G”开头的前3项,您将执行以下操作:

theDictionary.Where(kv => kv.Key.StartsWith("G")).Take(3);
theDictionary.Where(kv => kv.Key.ToLower().StartsWith("g")).Take(3);
Random rand = new Random();
theDictionary.OrderBy(kv => rand.Next()).Take(3);
如果您希望获得以“G”开头的前3项,而不考虑大小写,您将执行以下操作:

theDictionary.Where(kv => kv.Key.StartsWith("G")).Take(3);
theDictionary.Where(kv => kv.Key.ToLower().StartsWith("g")).Take(3);
Random rand = new Random();
theDictionary.OrderBy(kv => rand.Next()).Take(3);
最后,但并非最不重要的一点是,如果您想随机获得3个项目,您将执行以下操作:

theDictionary.Where(kv => kv.Key.StartsWith("G")).Take(3);
theDictionary.Where(kv => kv.Key.ToLower().StartsWith("g")).Take(3);
Random rand = new Random();
theDictionary.OrderBy(kv => rand.Next()).Take(3);


... 这不是筛选,而是“获取”3项。或者是吗?你想归还哪三样东西?有很多种方法可以只返回3项:基于索引顺序的前3项、基于字母顺序的前3项、随机3项等等。此外,“返回”是指作为方法调用的结果返回吗?@xtofl和@squillman请参见上面的更新。thx。@squillman-我想把这三个项目绑定到视图中的dropdownlist。。。这不是筛选,而是“获取”3项。或者是吗?你想归还哪三样东西?有很多种方法可以只返回3项:基于索引顺序的前3项、基于字母顺序的前3项、随机3项等等。此外,“返回”是指作为方法调用的结果返回吗?@xtofl和@squillman请参见上面的更新。thx.@squillman-我想把这三个项目绑定到视图中的下拉列表中。这个答案实际上是先前答案的精确副本,没有任何附加值或细节。@Anthony作为一个有经验的用户,你可能知道这样的情况发生得很快。你认为我花了多少时间写我的答案?你知道@Josh首先写了一个非常简短的答案吗?所以我决定写一个更完整的代码。然后乔希也完成了他的回答。您认为有多少“不同的正确答案”用于过滤IDictionary?此外,初学者通常不知道如何使用lambda表达式(键/值结构)处理IDictionary。我发布的代码也显示了这一点。@all-请查看我的3个特定项目(不再是随机的)抱歉confusion@rod你还需要更具体一些。列表中可以有多个“苹果”吗?这个答案实际上是先前答案的精确副本,没有任何附加值或细节。@Anthony作为一个有经验的用户,你可能知道这样的情况发生得很快。你认为我花了多少时间写我的答案?你知道@Josh首先写了一个非常简短的答案吗?所以我决定写一个更完整的代码。然后乔希也完成了他的回答。您认为有多少“不同的正确答案”用于过滤IDictionary?此外,初学者通常不知道如何使用lambda表达式(键/值结构)处理IDictionary。我发布的代码也显示了这一点。@all-请查看我的3个特定项目(不再是随机的)抱歉confusion@rod你还需要更具体一些。你能在列表中有多个“苹果”吗?请看我的3个特定项目(不再是随机的)抱歉confusion@rod:我已经更新了我的答案,但他们的做法已经“很好”。请查看我的3个具体项目(不再随机)抱歉confusion@rod当前位置我更新了我的答案,但他们认为你的做法已经“很好”他需要过滤吗?问题是什么:/Yes,假设OP想要回一本字典,这里的所有其他答案都返回一个IEnumerable;因此,OP可能希望使用
.ToDictionary(x=>x.Key,x=>x.Value)
结束他的
.Take(3)
.Where(…)
+1.建议。他需要过滤吗?问题是什么:/Yes,假设OP想要回一本字典,这里的所有其他答案都返回一个IEnumerable;因此,OP可能希望使用
.ToDictionary(x=>x.Key,x=>x.Value)
结束他的
.Take(3)
.Where(…)
+我赞成这个建议。