【问题标题】:c# Mvc Entity Framework issue with WHERE clause and Boolean valuesc# Mvc Entity Framework 问题与 WHERE 子句和布尔值
【发布时间】:2015-05-28 09:34:09
【问题描述】:

有人可以帮我调整下面的语法。我不断收到一条错误消息,提示“错误 403 'bool' 不包含 'ToList' 的定义,并且找不到接受类型为 'bool' 的第一个参数的扩展方法 'ToList'(您是否缺少 using 指令或程序集参考?)”

var workerRecords =
    from oe in context.tbl_Company_Workers.ToList() 
    where( 
        w => w.WorkerRoleID.HasValue && w.WorkerRoleID == 3
    ).ToList();

【问题讨论】:

  • 在 ToList() 之前需要一个 Select 子句
  • @tschmit007 我认为whereToList() 足以完成这项工作。如果我错了,请纠正我,如果我只选择特定属性,我会使用select。var result = Collection.Where(g=>g.Id >5).ToList()var result2 = Collection.Where(g=>g.Id>5).Select(h=>h.Id).ToList();
  • 我认为这可能会返回带有此过滤器的工人var workerRecords = context.tbl_Company_Workers.Where(w => w.WorkerRoleID.HasValue && w.WorkerRoleID == 3).ToList();
  • @tschmit007 对不起,我错了,Linq 肯定需要投影Select 才能获取数据。

标签: c# entity-framework asp.net-mvc-4 linq-to-sql lambda


【解决方案1】:
var workerRecords =
    (from oe in context.tbl_Company_Workers 
    where w.WorkerRoleID.HasValue && w.WorkerRoleID == 3
    select oe).ToList();

【讨论】:

    【解决方案2】:

    如果严格选择 3,为什么还需要 w.WorkerRoleID.HasValue?

    var workerRecords =
        (from oe in context.tbl_Company_Workers.ToList() 
        where oe.WorkerRoleID == 3 select oe
        ).ToList();
    

    【讨论】:

      【解决方案3】:

      请检查使用语句

      using System.Collections.Generic;
      using System.Linq;
      using System.Data.Linq;
      
      
      /// <summary>
      /// Summary description for Class1
      /// </summary>
      public class Class1
      {
       public void MethodName()
         {
          var workerRecords = context.tbl_Company_Workers.where(cw =>     w.WorkerRoleID.HasValue && w.WorkerRoleID.Value == 3).ToList();
          }
       }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-10
        • 1970-01-01
        相关资源
        最近更新 更多