【问题标题】:linq predicate in c#c#中的linq谓词
【发布时间】:2013-03-13 05:27:26
【问题描述】:

我有两个没有关系的表(例如: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)
      );

方法二:

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

对于这种情况,我该如何编写谓词....

【问题讨论】:

  • 我已格式化您的代码,但不清楚predicate 的类型以及您遇到的错误 - 请使用该信息编辑您的帖子。

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


【解决方案1】:

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

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

它为您提供所有TableSal 记录,其中DepartmentIdTableEmployeesDepartmentIds 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-16
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    相关资源
    最近更新 更多