gpt4 book ai didi

c# - 如果为空则返回零的 Lambda 表达式

转载 作者:太空狗 更新时间:2023-10-30 00:16:55 24 4
gpt4 key购买 nike

在我的 WPF 应用程序中,我曾经将控件动态添加到 Canvas。控件的名称格式为“Control_UniqueValue”。

即,如果我将第一个控件添加到 Canvas ,那么名称将是“Control_1”,下一个将是“Control_2”等...

我的要求是获取添加控件的最大值

我为此使用了以下语句

string maxId = (string)canvas1.Children.Cast<FrameworkElement>().ToList().Max(x => (x.Name.Substring(x.Name.LastIndexOf('_') + 1)));

但这里的问题是

  1. 需要以int的形式返回值

  2. 如果 Canvas 不包含控件,则会引发错误(尝试使用 Nullable 类型,但失败)

最佳答案

int  maxId = canvas1.Children
.Cast<FrameworkElement>()
.Select(e => int.Parse(e.Name.Substring(e.Name.LastIndexOf('_'))))
.DefaultIfEmpty()
.Max();

如果序列中没有元素,这应该返回 0 而不是抛出异常。此外,不需要在您的代码中调用 ToList。如果任何控件名称不是预期的格式,这仍然会引发异常。

关于c# - 如果为空则返回零的 Lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4545692/

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