ste*_*son 10
连接中的等式的两边被视为两个单独的lambda表达式,它们生成两个序列的键.
from category in categories
join prod in products on category.ID equals prod.CategoryID
categories.Join(products,
category => category.ID,
prod => prod.CategoryID,
(category, prod) => new { Category = category, Product=prod });
Run Code Online (Sandbox Code Playgroud)
使用equals关键字会使一个lambda结束而另一个lambda开始时无法辨认.另一方面,对于where子句,有一个lambda表达式决定每个项是否匹配:
from prod in products
where prod.CategoryID == 1
products.Where( prod => prod.CategoryID == 1 )
Run Code Online (Sandbox Code Playgroud)
从理论上讲,连接可以用一个lambda实现
from category in categories
join prod in products on category.ID == prod.CategoryID
categories.Join(products,
(category, prod) => category.ID == prod.CategoryID,
(category, prod) => new { Category = category, Product=prod });
Run Code Online (Sandbox Code Playgroud)
但是,通过计算两个键并进行比较本身,LINQ可以使用哈希表来计算连接,而不是必须为每对元素执行任意比较.
归档时间: |
|
查看次数: |
232 次 |
最近记录: |