C# 包含基于字典值的字符串字典的列表索引

C# 包含基于字典值的字符串字典的列表索引,c#,linq,list,dictionary,C#,Linq,List,Dictionary,我有一个列表,我想获取包含特定值的字典索引。我知道这可以通过LINQ实现,但我完全不知道如何获得它 任何帮助都将不胜感激 如果您确定元素已包含,则可以使用: int idx = list.IndexOf(list.Single(x => x.ContainsValue("value"))); 如果不确定,则必须测试它是否包含: var match = list.SingleOrDefault(x => x.ContainsValue("value")); int idx = mat

我有一个
列表
,我想获取包含特定值的字典索引。我知道这可以通过LINQ实现,但我完全不知道如何获得它


任何帮助都将不胜感激

如果您确定元素已包含,则可以使用:

int idx = list.IndexOf(list.Single(x => x.ContainsValue("value")));
如果不确定,则必须测试它是否包含:

var match = list.SingleOrDefault(x => x.ContainsValue("value"));
int idx = match != null ? list.IndexOf(match) : -1;

您可以使用
ContainsKey
ContainsValue
,具体取决于您搜索的值是键还是值。

如果您确定元素已包含,则可以使用以下方法:

int idx = list.IndexOf(list.Single(x => x.ContainsValue("value")));
如果不确定,则必须测试它是否包含:

var match = list.SingleOrDefault(x => x.ContainsValue("value"));
int idx = match != null ? list.IndexOf(match) : -1;
您可以使用
ContainsKey
ContainsValue
,具体取决于您搜索的值是键还是值。

假定
列表是
字典

var matches = dictionaries
    .Select((d, ix) => new { Dictionary = d, Index = ix })
    .Where(x => x.Dictionary.Values.Contains("specificValue")); // or ContainsValue as the Eric has shown

foreach(var match in matches)
{
    Console.WriteLine("Index: " + match.Index);
}
如果只需要第一个匹配项,请使用
matches.first().Index
。这种方法的好处是,您还拥有
词典
,并且如果需要,您拥有所有匹配项。

假定
列表
词典

var matches = dictionaries
    .Select((d, ix) => new { Dictionary = d, Index = ix })
    .Where(x => x.Dictionary.Values.Contains("specificValue")); // or ContainsValue as the Eric has shown

foreach(var match in matches)
{
    Console.WriteLine("Index: " + match.Index);
}
int index = listOfDictionaries.FindIndex(dict => dict.ContainsValue("some value"));
如果只需要第一个匹配项,请使用
matches.first().Index
。这种方法的好处是,您还拥有
字典
,并且如果需要,您可以拥有所有匹配项

int index = listOfDictionaries.FindIndex(dict => dict.ContainsValue("some value"));
如果该值未包含在任何字典中,则返回-1


如果该值未包含在任何词典中,则返回-1。

谢谢,尽管它远远超出了我的需要:)+1用于帮助谢谢,尽管它远远超出了我的需要:)+1用于帮助谢谢+1以获取帮助和正确答案,但我将选择ONLY112答案作为正确答案,因为它不需要额外的检查来返回-1,并且如果键/值不存在,也不会抛出错误!谢谢+1以获取帮助和正确答案,但我将选择ONLY112答案作为正确答案,因为它不需要额外的检查来返回-1,并且如果键/值不存在,也不会抛出错误!