gpt4 book ai didi

c# - Max,SelectMany,可能没有响应

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

我收到以下错误:System.Core.dll 中出现“System.InvalidOperationException”类型的未处理异常

附加信息:序列不包含任何元素

MainFields.ForEach(Field => Field.Size = Math.Max(FilesObject.SelectMany(x => x.Fields).Where(y => y.Name == Field.Name).Select(m => m.Size).Max(), Field.Size));

我的 MainFields 对象需要根据 FilesObject 中的所有字段进行更新。问题的根本原因有时是 FilesObject 中不存在 MainFields 名称,这是必要的。

我可以将其分解为一个循环并添加一些逻辑检查,但我希望 Linq 中有一种方法可以避免这种情况。

最佳答案

有这样一种方法 - 在调用 Max() 之前放置 DefaultIfEmpty():

Math.Max(FilesObject.SelectMany(x => x.Fields)
.Where(y => y.Name == Field.Name).Select(m => m.Size).DefaultIfEmpty(0).Max()
如果集合不包含任何元素,

DefaultIfEmpty 将返回带有一个默认元素的枚举,因此 Max() 将为空集合返回该元素(因为它是唯一的) (当然使用适当的默认值,我使用 0 只是为了举例)。

关于c# - Max,SelectMany,可能没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46977524/

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