如何在Linq中使用ContainsKey并在未找到密钥的情况下管理案例

Joh*_*ohn 0 c# linq

你如何将此代码转换为Linq lambda表达式?

var list = new List<string[]>();
foreach (var @char in _word)
{
     if (mapping.ContainsKey(@char.ToString()))   // I tried with TryGetValue but my brain has thrown a stackoverflow.
          list.Add(mapping[@char.ToString()]);
     else
           list.Add(mapping["?"]);
}
Run Code Online (Sandbox Code Playgroud)

如果有我在以前的代码中没有其他组成部分,LINQ表达式会像下面的代码,但我不知道该怎么到这里管理关键是没有找到的情况.

var list = _word.ToCharArray()
                .Where(mot => mapping.ContainsKey(mot.ToString()))
                .Select(mot => mapping[mot.ToString()]);
Run Code Online (Sandbox Code Playgroud)

解决方案必须保留订单.

zer*_*kms 5

var list = _word.Select(mot => mapping.ContainsKey(mot.ToString()) ? mapping[mot.ToString()] : mapping["?"]);
Run Code Online (Sandbox Code Playgroud)

  • `ToCharArray`是多余的,因为`String`已经是`IEnumerable <char>`. (2认同)