gpt4 book ai didi

.net - 为什么 LINQ 中的 'equals' 运算符会加入?

转载 作者:行者123 更新时间:2023-12-04 16:37:31 25 4
gpt4 key购买 nike

如果 t 可以在“where”子句中使用它,为什么链接不简单地在连接中使用 == 运算符?

最佳答案

连接中等式的两侧被视为两个单独的 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 });

使用 equals 关键字可以明确一个 lambda 的结束位置和另一个 lambda 的开始位置。另一方面,对于 where 子句,有一个 lambda 表达式来决定每个项目是否匹配:
from prod in products
where prod.CategoryID == 1

products.Where( prod => prod.CategoryID == 1 )

理论上,连接可以用单个 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 });

但是,通过计算两个键并自己进行比较,LINQ 可以使用哈希表来计算连接,而不是必须对每对元素执行任意比较。

关于.net - 为什么 LINQ 中的 'equals' 运算符会加入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1620606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com