gpt4 book ai didi

linq - 包括使用 Lambda 表达式

转载 作者:行者123 更新时间:2023-12-02 11:20:47 31 4
gpt4 key购买 nike

在基于字符串的 Include 重载中,我们指定包含一个集合,然后只需按正确的顺序指定相关导航属性即可包含一个向下一级的引用:

query.Include("Level1Collection.Level2Reference");

但是为什么当使用使用 lambda 表达式的 Include 重载时,我们还必须使用 Select 语句才能指定上述查询:

query.Include(e => e.Level1Collection.Select(l1 => l1.Level2Reference)).

为什么以下不起作用:

query.Include.(e => e.Level1Collection.Level2Reference)

谢谢

最佳答案

因为编译器无法识别上下文已将集合属性的含义从集合更改为集合中对象的替代。由于编译器不会根据上下文进行更改,因此智能感知也不会更改。

当您提供 Include 字符串语句时,它知道必须使用反射来知道要包含哪些属性,并且编译时不会进行类型检查。底层方法知道,当它在字符串中的集合属性后面看到一个点时,它应该解析集合中对象的属性以获取下一个引用的属性,而不是集合本身(在本例中为“Level2Reference”)。

或者换句话说:这很神奇。 :)

关于linq - 包括使用 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10035261/

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