2013-03-04 78 views
0

我有一种方法,我尝试通过LINQ查询返回一些数据库结果,但是Visual Studio不允许我使用select语句。这是我到目前为止有:不能在LINQ查询中使用select

public static int GetCurrentUserDepartmentId(Guid userGuid) 
{ 
    int departmentId = -1; 

    using (PTMS_DataEntities entities = new PTMS_DataEntities()) 
    { 
     var userDepartment = from employee in entities.Employees 
          join user in entities.aspnet_Users 
          on employee.User_Id equals user.UserId 
          where employee.User_Id equals userGuid          

     departmentId = (int)userDepartment;     
    } 

    return departmentId; 
} 

然而,在LINQ段,我会像到如下:

from employee in entities.Employees 
join user in entities.aspnet_Users 
on employee.User_Id equals user.UserId 
where employee.User_Id equals userGuid 
select employee.Department_Id 

有,为什么我不是一个特别的原因被允许添加最后的选择部分?

+0

你的意思是说你没有得到intellisense中的select方法吗? – 2013-03-04 17:11:23

+0

正确。当我尝试手动添加它时,它也不喜欢它。 – 2013-03-04 17:12:53

+0

是命名空间System.Linq添加在顶部? – 2013-03-04 17:13:30

回答

2

纠正你

where employee.User_Id equals userGuid 

where employee.User_Id == userGuid 
+0

所以只是为了澄清,==和等于工作类似于常规的C#代码,这意味着等于等同于.Equals()?道歉,我在使用LINQ方面有点新鲜。 – 2013-03-04 17:16:09

+0

@Chris V.,* equals *是仅在查询表达式的连接子句中使用的上下文关键字。 – aush 2013-03-04 17:19:06

+0

我相信,equals只用于linq内,因为除了连接语法之外,==和.Equals是不同的机制,尽管 – AdamWhite 2013-03-04 17:19:15

2

的问题是与您的where子句:

var userDepartment = from employee in entities.Employees 
         join user in entities.aspnet_Users 
         on employee.User_Id equals user.UserId 
         where employee.User_Id equals userGuid 

应该是:

var userDepartment = from employee in entities.Employees 
         join user in entities.aspnet_Users 
         on employee.User_Id equals user.UserId 
         where employee.User_Id == userGuid 
         select employee.Department_Id 
+0

是不是只用于数字数据?我的印象是Guids是字符串数据 – 2013-03-04 17:17:47

+0

@ChrisV。对于任何类型,'=='运算符都可以被重载。 – 2013-03-04 17:21:42

+0

@ChrisV。看看这个[C#区别'=='和.Equals()](http://stackoverflow.com/questions/814878/c-sharp-difference-between-and-equals) – psubsee2003 2013-03-04 17:22:07