日期:2014-05-20  浏览次数:20729 次

关于LINQ的一个问题,以直没弄明白
就是=> 这个符号是什么意思?


------解决方案--------------------
可以理解为左侧的参数传给右侧的语句。
------解决方案--------------------
这是 lambda 运算符 

例如,lambda 表达式 x => x * x 指定名为 x 的参数并返回 x 的值计算的。


http://msdn.microsoft.com/zh-cn/library/vstudio/bb397687.aspx
------解决方案--------------------
(int x) => x //实际上int可以不写
相当于定义了这样一个函数:
int myfunc(int x)
{
    return x;
}
p => p.id == 1
相当于
bool myfunc(Product p)
{
    return p.id == 1;
}
------解决方案--------------------
你也可以把一个函数写成Lambda
比如:
int Sum(int max)
{
    int result = 0;
    for (int i = 1; i <= max; i++)
    {
        result += i;
    }
    return result;
}
void Main()
{
    Console.WriteLine(sum(100)); // 5050
}

也可写成
void Main()
{
    Func<int, int> sum = max => 
    {
        int result = 0;
        for (int i = 1; i <= max; i++)
        {
            result += i;
        }
        return result;
    };
    Console.WriteLine(sum(100)); // 5050
}

此时不需要额外定义那个sum函数了。
------解决方案--------------------