.net 使用lambda表达式时过滤泛型集合的最佳方法?

.net 使用lambda表达式时过滤泛型集合的最佳方法?,.net,vb.net,lambda,.net,Vb.net,Lambda,在使用lambda表达式时,有没有更好的方法来过滤.NET中的泛型集合?在使用lambda表达式或LINQ时,请关注可读性,但避免不必要的代码,并遵循最佳实践 下面是一些用于过滤包含Pet类型对象的通用集合的代码,我们希望使用PetType=“Dog”获得所有对象的最小年龄 效率不高,但略短,希望可读性更好: Dim min As Integer = (From pet In pets Where pet.PetType = "Dog" Select pet.Age).Min 我只是将您的

在使用lambda表达式时,有没有更好的方法来过滤.NET中的泛型集合?在使用lambda表达式或LINQ时,请关注可读性,但避免不必要的代码,并遵循最佳实践

下面是一些用于过滤包含Pet类型对象的通用集合的代码,我们希望使用PetType=“Dog”获得所有对象的最小年龄


效率不高,但略短,希望可读性更好:

Dim min As Integer =
  (From pet In pets Where pet.PetType = "Dog" Select pet.Age).Min

我只是将您的内联LINQ转换为查询样式。

如果您想在VB中使其更为惯用(并且更为简洁),可以使用以下子句:

Dim minAge = Aggregate p In pets Where p.PetType = "Dog" Into Min(p.Age)

我不确定您是否能比使用您在实践中正在执行的方法
Where
的单个调用更好。您是否有任何您认为可能效率低下的特定内容?这纯粹是从内存的角度还是从数据库查询的角度?因为它们是两个完全不同的挑战,而且,这是我们谈论的记录数量吗?如果是这样的话,任何形式的改进都将是微不足道的(微秒,如果有的话)。如果只是在内存中,那么运行它的机器的规格也是一个因素……没有足够的上下文来正确回答这个问题,真的。@James:我在上面的代码中没有看到任何数据库。。。假设没有,我知道,但是,人们常常把LINQ to Objects和say LINQ to EF混淆起来,我只是想澄清一下。OP可能会使用这个小示例进行演示。抱歉,伙计们,这与数据库/EF无关,它只在内存中,您可能对代码的小性能改进是正确的,即使用于生产目的的集合包含更多项,所以这个问题可能更多的是关于可读性而不是性能…非常好,内联LINQ确实会提高代码的可读性!
Dim minAge = Aggregate p In pets Where p.PetType = "Dog" Into Min(p.Age)