c# - 这可以通过使用 linq 使其更具可读性吗?

标签 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();

这可能意味着最好不要管它。但是我很好奇是否有经验的人可以以可读的方式对其进行 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/

相关文章:

c# - 将 IEnumerable 转换为 IList 返回 null

c# - Expression.DebugInfo 如何标记表达式?

c# - 按另一个内存列表对内存列表进行排序

c# - LINQ 按字典值列表中的类型过滤

c# - WPF 中是否有 C# 的 MVC 模式

c# - 在 C# 中列出类似于 C++ 中的 vector.reserve(n) 的内容

c# - 如何阻止 TCP 和 UDP 数据包(洪水攻击)

c# - 取消 ContinueWith 任务链并向调用者报告错误

c# - 如何解决 Xamarin.Android Java 互操作的缓慢问题

linq - Linq to NHibernate 中的子查询