创建一个类来保存一个LINQ查询



这个问题是"如何绑定多个类型的变量"这个问题的延续。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);
        } 

相关内容

  • 没有找到相关文章

最新更新