使用linq可以使其更具可读性吗?

Man*_*nia 2 c# linq

我正在尝试使用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();
Run Code Online (Sandbox Code Playgroud)

这可能意味着它最好独自一人..但我很好奇,如果一个老将能够以可读的方式解决它?

Tim*_*son 7

return values.SelectMany(v => v.Escaped ? new[] { EscapeByte, v.DataByte } : new[] { v.DataByte }).ToArray();
Run Code Online (Sandbox Code Playgroud)

要么:

return (from v in values
        from r in v.Escaped ? new[] { EscapeByte, v.DataByte } : new[] { v.DataByte }
        select r).ToArray()
Run Code Online (Sandbox Code Playgroud)