无法转换';System.Collections.Generic.List<;长>';到';S
本文关键字:lt gt List Collections 转换 System Generic | 更新日期: 2023-09-27 17:59:27
使用带有LINQ查询的ObservableCollection
从SQL Server数据库表中获取int
时,我遇到了这个错误。假设返回一个4位数的整数,如3125
CS1503参数1:无法从转换'System.Collections.Generic.List<长?>'到'System.Collections.Generic.List<长>'
这怎么可能呢?它与List
中的类型相同。
我的代码,
public static ObservableCollection<long> SearchNameComboStaffNo(DatabaseDataContext database, string staffNameFirst, string staffNameSecond)
{
return new ObservableCollection<long>
(database.Staff_Data_TBLs
.Where(staff => staff.Staff_Name_First == staffNameFirst &&
staff.Staff_Name_Second == staffNameSecond)
.Select(staff => staff.Staff_No).ToList());
}
无论我尝试什么,我总是会遇到编译错误。但是,它怎么可能不能转换相同的类型呢?
很可能,staff.Staff_No
不是表中必需的列,因此它返回的是可为null的long
,而不是long
。
如果要将其存储在long
的列表中,请修改查询以给它一个默认值。
return new ObservableCollection<long>
(database.Staff_Data_TBLs
.Where(staff => staff.Staff_Name_First == staffNameFirst &&
staff.Staff_Name_Second == staffNameSecond)
.Select(staff => staff.Staff_No ?? 0).ToList());
如果它是数据库中的int
,并且需要将其存储在long
的集合中,则需要首先对其进行转换,否则将出现类似于"无法从List<int>转换为List<long?>"的错误。
.Select(staff => (long)staff.Staff_No ?? 0).ToList());