我正在尝试使用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)
这可能意味着它最好独自一人..但我很好奇,如果一个老将能够以可读的方式解决它?
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)
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |