cq中的linq谓词

时间:2013-03-13 05:27:27

标签: c# asp.net linq-to-sql predicate

我有两个表(对于Ex:TableEmployee,TableSal)没有任何关系, 我必须使用这两个表来编写谓词,

TableEmployees:此表包含Name,DepartmentId列

TableSal:此表包含Name,DepartmentId,TotalSal

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

我已尝试过这些方法,但却出现了错误,

方法一:

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);

我如何为这种情况编写谓词....

1 个答案:

答案 0 :(得分:0)

我想知道你为什么要处理原始表达式。使用linq,你可以这样做:

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

为您提供TableSal DepartmentId DepartmentId中所有TableEmployees个{{1}}的记录。