gpt4 book ai didi

c# - 基于属性选择的 LINQ 查询

转载 作者:太空宇宙 更新时间:2023-11-03 17:22:43 25 4
gpt4 key购买 nike

IEnumerable<MyClass> objects = ...
foreach(MyClass obj in objects)
{
if(obj.someProperty != null)
SomeFunction(obj.someProperty);
}

我觉得我可以使用 lambda 编写自鸣得意的 LINQ 版本,但我所有的 C# 经验都是“经典的”,即更像 Java,所有这些 Linq 东西让我感到困惑。

它会是什么样子,值得做吗,或者这种 Linq 用法是否只是被视为炫耀“看,我知道 Linq!”

最佳答案

LINQ 本身不包含任何用于此的内容 - 我会使用普通的 foreach 循环:

foreach (var value in objects.Select(x => x.someProperty)
.Where(y => y != null))
{
SomeFunction(value);
}

或者如果你想要一个查询表达式版本:

var query = from obj in objects
let value = obj.SomeProperty
where value != null
select value;
foreach (var value in query)
{
SomeFunction(value);
}

(我个人更喜欢第一个版本。)

请注意,我在过滤之前执行了选择以避免不必要地调用该属性两次。这不是出于性能原因,而是我不喜欢冗余:)

虽然您可以使用ToList() 并对其调用ForEach(),但我更喜欢直接使用foreach 循环,根据 Eric's explanation .基本上,SomeFunction 必须产生副作用才能发挥作用,而 LINQ 在设计时就考虑到了无副作用的函数。

关于c# - 基于属性选择的 LINQ 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3318265/

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