0

如何将此代码转换为 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["?"]);
}

如果我之前的代码中没有其他部分,则 linq 表达式将类似于以下代码,但我不知道如何管理找不到密钥情况。

var list = _word.ToCharArray()
                .Where(mot => mapping.ContainsKey(mot.ToString()))
                .Select(mot => mapping[mot.ToString()]);

解决方案请务必保存顺序。

4

1 回答 1

5
var list = _word.Select(mot => mapping.ContainsKey(mot.ToString()) ? mapping[mot.ToString()] : mapping["?"]);
于 2013-05-21T23:21:48.300 回答