如何将所有匹配项的列表返回到 C# 函数/linq 中的字典查找?

问题描述 投票:0回答:1

基本上尝试

  • 输入字符列表。
  • 根据字符>字符串连接的字典交叉引用每个字符。
  • 输出字符串列表。

在普通的 c# 中,我的工作原理与此类似:

foreach(char c in wholeString)
   if(dictionary.containskey(c))
      stringArray.Add(dictionary[c]);

return stringArray;

我在 C# 函数式风格或下面的 linq 中的失败尝试:

string inputString = "//comment";

Dictionary<char, string> crossRefDict;
   crossRefDict.Add('/', "DIVIDE");
   crossRefDict.Add('a', "ALPHA");
   crossRefDict.Add('b', "ALPHA");

Func<Dictionary<char,string>, IEnumerable<char>, IEnumberable<string>> returnCharRefs
= (dictionary, characters) => characters.Select(x => dictionary[characters]);

IEnumerable<char> inputCharacters = inputString.Select(x => x);

IEnumerable<string> characterReferences = returnCharRefs(crossRefDict, inputCharacters);

return characterReferences;

每当字典比较遇到不存在的键时,它就会不断返回一个结果或空结果。这可能应该很简单,但我很挣扎。

c# linq functional-programming
1个回答
0
投票

您可以使用查询语法:

return from c in inputString
       where dictionary.ContainsKey(c)
       select dictionary[c];

LINQ:

return inputString
    .Where(dictionary.ContainsKey)
    .Select(c => dictionary[c]);
© www.soinside.com 2019 - 2024. All rights reserved.