C# 如何使int数组为空?
我有以下代码:C# 如何使int数组为空?,c#,.net,C#,.net,我有以下代码: var contractsID = contracts.Select(x => x.Id); int?[] contractsIDList = contractsID.ToArray();//for debug 在这方面: int?[] contractsIDList = contractsID.ToArray();//for debug 我得到这个错误: 无法将int[]类型隐式转换为int 我试图做的是使contractsIDList成为可为空的类型 如何使int数
var contractsID = contracts.Select(x => x.Id);
int?[] contractsIDList = contractsID.ToArray();//for debug
在这方面:
int?[] contractsIDList = contractsID.ToArray();//for debug
我得到这个错误:
无法将int[]类型隐式转换为int
我试图做的是使contractsIDList成为可为空的类型
如何使int数组为空?您应该得到的错误是:
无法将int[]类型隐式转换为int?[]
因此,您需要转换这些值:
int?[] contractsIDList = contractsId.Cast<int?>().ToArray();//for debug
int?[]contractsIDList=contractsId.Cast().ToArray()//用于调试
在您的情况下,最简单的方法是从选择中获取int?
:
var contractsID = contracts.Select(x => (int?)x.Id);
int?[] contractsIDList = contractsID.ToArray();
但我猜您实际上希望从int[]
获取int?[]
(因为Id
不可为空)。您可以使用数组。ConvertAll
:
int[] contractsID = contracts.Select(x => x.Id).ToArray();
int?[] contractsIDList = Array.ConvertAll(contractsID, i => (int?)i);
或者直接在LINQ查询中强制转换它:
int?[] contractsIDList = contracts.Select(x => (int?) x.Id).ToArray();
用这个
int?[] contractsIDList = contractsID.ConvertAll<int?>((i) => { int? ni = i; return ni; }).ToArray();
int?[]contractsIDList=contractsID.ConvertAll((i)=>{int?ni=i;返回ni;}).ToArray();
为什么希望数组为空?作为引用类型,它已经可以为null。我不理解错误消息。x.Id
是int?
还是int
?你真的想从int[]
创建int吗?[]
?你的错误消息对你显示的代码没有意义。在我看来,一个模棱两可的问题导致了很多分歧。我想知道你的100%评论是否正确,它根本不起作用。如果contractsID
是一个数组(它是什么),您需要将数组作为参数传递,它不是一个实例方法。OP已经显示了他的代码:var contractsID=contracts.Select(x=>x.Id)
,它是一个IEnumerable
。也可以表示为契约。选择(x=>newint?(x.Id))代码>