我想获取 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
您还可以将序列元素转换为 int
:
var max = takeMaxmumId.Select(x => (int)x).DefaultIfEmpty(1).Max();
关于C# 不能在 ushort 列表项中使用 Linq DefaultIfEmpty?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44747919/