有关 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();
    }
}

有关 C# LINQ 查询模式的文档

这是Jon Skeet的总结。

如果我不得不关注它,您的查询语法应转换为以下方法语法:

var r = 5.ToIdentity().SelectMany(x =>
        6.ToIdentity().Select(y =>
            x + y));

调用SelectMany是因为您从两个源中进行选择,并期望单个输出序列。

编辑:交换SelectSelectMany