这个问题是"如何绑定多个类型的变量"这个问题的延续。LINQ
我试图选择一行数据,其中有30列,标准是列Staff_No
的唯一值。该行有几个数据类型。
我不能得到语法正确,这是代码。
internal class DatabaseQueries
{
public static IEnumerable<int> ModValues(DatabaseDataContext database, int staffNo)
{
return database.Staff_Mod_TBLs
.Where(staff => staff.Staff_No == staffNo).Cast<int>().ToList();
}
}
错误是InvalidOperationException Class。
这段代码给出了这个错误,
public static IEnumerable<decimal> ModValues(DatabaseDataContext database, int staffNo)
{
return database.Staff_Mod_TBLs
.Where(staff => staff.Staff_No == staffNo).Select(staff => staff.Days_No_D).ToList();
}
错误,Severity Code Description Project File Line Suppression State Error CS0266 Cannot implicitly convert type 'System.Collections.Generic.List<decimal?>' to 'System.Collections.Generic.IEnumerable<decimal>'. An explicit conversion exists (are you missing a cast?)
我正在尝试选择一行
[在评论中…]]
我试图得到整行,它有几个数据类型。
则不需要Cast()
或ToList()
。如果你想要单个记录,只需要获取匹配的单个记录:
return database.Staff_Mod_TBLs
.Single(staff => staff.Staff_No == staffNo);
或者,如果您想返回null
而不是在没有匹配时抛出错误:
return database.Staff_Mod_TBLs
.SingleOrDefault(staff => staff.Staff_No == staffNo)
当然你需要改变方法的返回类型:
public static Staff_Mod_TBL ModValues(...)
(假设类型名基于表名。如果不一致,请根据需要替换。
基本上,你正在寻找的是一个对象的实例,它代表了该表中的一条记录。
我不认为你可以将Staff_Mod_TBLs
转换为int
,这是无效的
你真是把事情搞混了:
.Cast<int>
将每个元素转换为int
。
如果你想基于过滤器返回整个对象:
public static Staff_Mod_TBLs ModValues(DatabaseDataContext database, int staffNo)
{
return database.Staff_Mod_TBLs
.FirstOrDefault(staff => staff.Staff_No == staffNo);
}