【发布时间】:2013-10-25 08:56:35
【问题描述】:
我经常发现自己想在 IEnumerables 上使用 Head 和 Tail 方法,这在 Linq 中并不存在。虽然我可以很容易地写自己的,但我想知道它们是否被故意排除在外。例如,
var finalCondition = new Sql("WHERE @0 = @1", conditions.Head().Key, conditions.Head().Value);
foreach (var condition in conditions.Tail())
{
finalCondition.Append("AND @0 = @1", condition.Key, condition.Value);
}
那么,Linq 的最佳实践是什么?我一直在寻找它的用途这一事实是否表明我没有做推荐的事情?如果不是,那么为什么这种常见的功能范式没有在 Linq 中实现?
【问题讨论】:
-
First() 和 Last() 或 FirstOrDefault()
-
Oliver Sturm 的书Functional Programming in C# 有很多可下载的源代码。如果我没记错的话,它还包含 head 和 tail 的扩展方法。
-
@GertArnold 我已经实现了它们,问题更多的是关于这是否被认为是最佳实践。
-
我明白,这就是为什么我不认为这是一个答案:)。但本书还详细阐述了函数式编程技术的实际使用以及 C# 中的具体限制。它可能会让你走得更远。 (前段时间读过)。