我正在尝试使用 linq 使我的代码可读 - foreach 循环通常很容易成为目标。
然而,有一个看起来很简单,但 linq 形式让我无法理解:
const byte EscapeByte = 0x5C;
List<byte> result = new List<byte>();
foreach (var v in values)
{
if (v.Escaped)
{
result.Add(EscapeByte);
}
result.Add(v.DataByte);
}
return result.ToArray();
这可能意味着最好不要管它。但是我很好奇是否有经验的人可以以可读的方式对其进行 linq 处理?
最佳答案
return values.SelectMany(v => v.Escaped ? new[] { EscapeByte, v.DataByte } : new[] { v.DataByte }).ToArray();
或者:
return (from v in values
from r in v.Escaped ? new[] { EscapeByte, v.DataByte } : new[] { v.DataByte }
select r).ToArray()
关于c# - 这可以通过使用 linq 使其更具可读性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3179526/