C# c语言中的linq谓词#
我有两个没有关系的表(例如:TableEmployee,TableSal), 我必须用这两个表来写谓词 TableEmployees:此表包含名称、部门ID列 TableSal:此表包含名称、部门ID和TotalSal 问题: 我必须为“TableSal中的DepartmentId是否与TableEmployees中的任何DepartmentId匹配”编写谓词 我尝试过这些方法,但是得到了性爱 方法1: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
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
中,我已经格式化了您的代码,但不清楚谓词的类型以及您遇到的错误-请用这些信息编辑您的帖子。