使用带有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());
}
无论我尝试什么,我总是遇到编译错误。但是,它怎么能不能转换相同的类型呢?
答案 0 :(得分:2)
最有可能的是,staff.Staff_No
不是表格中的必填列,因此它返回的是可空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&lt; int&gt;转换为List&lt; long?&gt;”。
.Select(staff => (long)staff.Staff_No ?? 0).ToList());