VB.NET中使用LINQ是否必须用From?能否始终避免使用它?
关于VB.NET LINQ写法的问题解答
1. 能不能始终避免使用From,坚持方法调用写法?
完全可以。VB.NET里以From开头的查询表达式本质是语法糖,编译器最终会把它翻译成和你现在用的Where、ToArray这类直接调用LINQ扩展方法的代码。两种写法在功能、性能上完全等价,只是语法形式不同。你习惯的方法链写法(集合.Where(条件).ToArray())是完全合法且官方支持的写法,没有任何问题。
2. 有没有无法避免使用From的场景?
几乎没有。所有LINQ能实现的查询逻辑,都可以通过直接调用扩展方法(Where、Select、GroupBy、Join等)完成。只是某些复杂场景下,比如多表关联、分组后嵌套查询、定义中间变量(对应查询表达式的Let),用方法链写起来代码会更冗长,可读性不如查询表达式,但并非做不到。不存在必须用From才能实现的查询。
3. 坚持用方法调用写法是否合理?
非常合理。选择LINQ的写法完全看个人习惯和团队编码规范:
- 如果个人觉得方法链更符合传统编程语言的逻辑,写起来更顺手,完全可以一直用;
- 要是团队有统一规范要求用查询表达式,那需要遵循规范;
- 部分复杂查询场景下,查询表达式的可读性可能更好,这时候可以根据需求灵活切换,但不是必须。
举个例子,你原来的代码:
Dim orderFromThisGridTrading = _orders1.Where(Function(x) x.customIdentifier = ASimpleGridTradeSettings.name).ToArray
对应的查询表达式写法是:
Dim orderFromThisGridTrading = (From x In _orders1 Where x.customIdentifier = ASimpleGridTradeSettings.name Select x).ToArray
两者编译后生成的IL代码完全一致,没有任何区别。
内容的提问来源于stack exchange,提问作者user4951
相关产品推荐
相关产品推荐

