0

我正在编写一个 LightSwitch 应用程序,我可以提供一些建议。

我想计算与父对象相关的子对象的总数,这些子对象满足真实且与客户端相关的标准。

partial void OpenPositions_Compute(ref int result)
{
    foreach (Position position in this.DataWorkspace.ApplicationData.Positions)
    {
        if (position.IsPositionOpen && position.Client.Id == this.Id)
        {
            result++;
        }
    }
}

我确实尝试在不使用 foreach 循环的情况下计算客户拥有的职位数量,我想出了这个:

partial void TotalPositons_Compute(ref int result)
{
    result += this.Position.Count();
} 

问题 1:是否有可能以更好/更有效的方式编写代码片段 1?也许作为一个 lambda 方程?(或类似于第二个代码片段)

问题 2:除了代码的可读性之外,lambda 方程还有什么好处?

4

1 回答 1

2

问题一:

partial void OpenPositions_Compute(ref int result)
{
    result = this.DataWorkspace.ApplicationData.Positions
        .Count(p => p.IsPositionOpen && position.Client.Id == this.Id);
}

问题2:

这取决于使用情况。在这种情况下,最大的优势是代码简洁,因为您可以使用 LINQ 而无需重新实现计数功能。有时可以提高性能。再次以 LINQ 为例,LINQ 使用延迟执行来防止在需要时执行代码。

通常,lambda 不是解决方案,而是解决方案的一部分。使用 LINQ 通常是解决此类问题的方法。

于 2012-04-16T22:11:09.467 回答