gpt4 book ai didi

C# 不能在 ushort 列表项中使用 Linq DefaultIfEmpty?

转载 作者:太空狗 更新时间:2023-10-30 01:14:15 33 4
gpt4 key购买 nike

我想获取 ushort 列表的最大值,当该列表为空时,我想将默认值设置为“1”。

例如:

List<ushort> takeMaxmumId = new List<ushort>();
var max = takeMaxmumId.Select(x=>x).DefaultIfEmpty(1).Max();

在我的示例 Visual Studio 中向我显示此错误:

'IEnumerable' does not contain a definition for 'DefaultIfEmpty' and the best extension method overload 'Queryable.DefaultIfEmpty(IQueryable, int)' requires a receiver of type 'IQueryable'

当我的列表类型是 int 时我没有任何问题,ushort 类型有什么问题?我怎样才能用最好的方法解决这个问题?

最佳答案

问题是 Select产生 IEnumerable<ushort> , 而 DefaultIfEmpty提供 int默认。因此,类型不匹配。

您可以通过强制 ushort 来解决这个问题默认输入:

var max = takeMaxmumId.Select(x=>x).DefaultIfEmpty<ushort>(1).Max();
// ^^^^^^^^^^^^^
// This part can be removed

Demo.

您还可以将序列元素转换为 int :

var max = takeMaxmumId.Select(x => (int)x).DefaultIfEmpty(1).Max();

关于C# 不能在 ushort 列表项中使用 Linq DefaultIfEmpty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44747919/

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