C# c语言中的linq谓词#

C# c语言中的linq谓词#,c#,asp.net,linq-to-sql,predicate,C#,Asp.net,Linq To Sql,Predicate,我有两个没有关系的表(例如:TableEmployee,TableSal), 我必须用这两个表来写谓词 TableEmployees:此表包含名称、部门ID列 TableSal:此表包含名称、部门ID和TotalSal 问题: 我必须为“TableSal中的DepartmentId是否与TableEmployees中的任何DepartmentId匹配”编写谓词 我尝试过这些方法,但是得到了性爱 方法1: predicate = predicate.And( n => conte

我有两个没有关系的表(例如:TableEmployee,TableSal), 我必须用这两个表来写谓词

TableEmployees:此表包含名称、部门ID列

TableSal:此表包含名称、部门ID和TotalSal

问题: 我必须为“TableSal中的DepartmentId是否与TableEmployees中的任何DepartmentId匹配”编写谓词

我尝试过这些方法,但是得到了性爱

方法1:

predicate = predicate.And(
      n => context.Tbl_Sal
        .Where(d => d.DepartmentId.HasValue)
        .Select(i => i.DepartmentId)
        .Equals(n.DepartmentId)
      );
方法2:

predicate = predicate.And(
   n => context.Tbl_Sal
      .Where(d => d.DepartmentId.HasValue)
      .ToList().Find(d => d.DepartmentId == n.DepartmentId) != null);

我如何写谓词。。。。对于这种情况……

我想知道您为什么要处理原始表达式。使用linq,您可以执行以下操作:

var query = context.TableSal
           .Where(d => context.TableEmployees.Where(e => e.DepartmentId.HasValue)
                      .Select(e => e.DepartmentId)
                      .Contains(d.DepartmentId));

这将为您提供所有
TableSal
记录,其中
DepartmentId
位于
TableEmployees
DepartmentId
中,我已经格式化了您的代码,但不清楚
谓词的类型以及您遇到的错误-请用这些信息编辑您的帖子。