C# 如何在字典中检查字符串值<;字符串,列表<;字符串[]>&燃气轮机;()反对?

C# 如何在字典中检查字符串值<;字符串,列表<;字符串[]>&燃气轮机;()反对?,c#,dictionary,C#,Dictionary,为了简单起见,我在下面的字典中为每个字符串键填充了未知数量的字符串。我还有下面的字符串列表 var dict = new Dictionary<string, List<string[]>>(); IList<string> headerList = new List<string>(); 例如,我需要检查“honda”是否包含在字典值中。我想我需要做如下的事情来查看这些值是否包含一个列表,其中包含有问题的字符串。请记住,我对C#还相当陌生 约翰

为了简单起见,我在下面的字典中为每个字符串键填充了未知数量的字符串。我还有下面的字符串列表

var dict = new Dictionary<string, List<string[]>>();
IList<string> headerList = new List<string>();
例如,我需要检查“honda”是否包含在字典值中。我想我需要做如下的事情来查看这些值是否包含一个列表,其中包含有问题的字符串。请记住,我对C#还相当陌生


约翰·奥多姆是对的,你需要一份清单

我建议您在内部使用
HashSet
作为
Diictionary
的值。例如,
字典

然后,在查询时,您可以执行以下操作:

 headerList.Where(x => dict.Values.Any(d => d.Contains(x))).ToList()
string containingKey = dict.Keys
                           .Where(key => dict[key].Contains("honda"))
                           .FirstOrDefault();

查看性能比较

如果您只想知道字典中是否包含汽车麸皮(例如“honda”),您可以使用以下查询:

bool isInDict = dict.Values
                    .SelectMany(lst => lst)
                    .Any(car => car == "honda");
要返回存储该值的键,可以使用以下方法:

 headerList.Where(x => dict.Values.Any(d => d.Contains(x))).ToList()
string containingKey = dict.Keys
                           .Where(key => dict[key].Contains("honda"))
                           .FirstOrDefault();
要获取值出现的整个列表,请运行以下命令:

List<string> containingList = dict.Values
                                  .Where(v => v.Contains("honda"))
                                  .FirstOrDefault();
List containingList=dict.值
其中(v=>v.Contains(“本田”))
.FirstOrDefault();
在第一种情况下,您要做的就是将所有列表展平,并检查所有列表中是否有任何值是搜索的汽车名称。如果为true,则该值在字典中

第二个:拿到所有的钥匙。将每个钥匙应用于字典,以获得相应的列表,并检查列表是否包含汽车名称。返回找到汽车名称的第一把钥匙


第三个-与第二个类似,但我们对值进行搜索。检查值(即列表)是否包含车辆名称。返回第一个包含名称的集合。

在谷歌上搜索如何使用
ContainsKey
方法我需要检查值,而不是键在
ContainsValue
上搜索,然后这是一个相当复杂的结构。你的字典里有哪些关键字?这看起来有点像你对这个问题想得太多了。另外,如果使用列表,可以使用Contains
dict[key]。Contains(header)
Dictionary()不应该是Dictionary();相反要声明一个字符串列表,只需声明list(),由于使用了HashSet,而且代码更少,所以更倾向于使用这个答案。