有关 C# LINQ 查询模式的文档
本文关键字:文档 模式 查询 LINQ 有关 | 更新日期: 2023-09-27 17:57:15
我在网上找到了一些例子,例如下面的标识mondad,其中查询语法在创建SelectMany扩展方法时以完全不同的方式使用。
在哪里可以找到有关哪些查询语法映射到其扩展方法对应项的文档?在下面的示例中,from x in ...
映射到 SelectMany(),以及 SelectMany() 的某个重载。我想知道所有 LINQ 查询语法扩展方法转换。
void Main()
{
var r = from x in 5.ToIdentity()
from y in 6.ToIdentity()
select x + y;
r.Dump();
}
class Identity<T>
{
public T Value { get; private set; }
public Identity(T value) { this.Value = value; }
}
static class Extensions
{
public static Identity<T> ToIdentity<T>(this T value)
{
return new Identity<T>(value);
}
public static Identity<V> SelectMany<T, U, V>(this Identity<T> id, Func<T, Identity<U>> k, Func<T,U,V> s)
{
return s(id.Value, k(id.Value).Value).ToIdentity();
}
}
源
这是Jon Skeet的总结。
如果我不得不关注它,您的查询语法应转换为以下方法语法:
var r = 5.ToIdentity().SelectMany(x =>
6.ToIdentity().Select(y =>
x + y));
调用SelectMany
是因为您从两个源中进行选择,并期望单个输出序列。
编辑:交换Select
和SelectMany
。