【问题标题】:C# Linq Lambda Left Join Where Right is Null [duplicate]C# Linq Lambda Left Join 其中 Right 为 Null [重复]
【发布时间】:2017-12-27 14:28:16
【问题描述】:

所以我在model.Salesmen 的一个分支中以List<ApplicationUser> 的形式列出了现有销售人员。

我想生成所有其他用户的列表以填充下拉菜单以便于添加。到目前为止我写的东西,灵感来自this SO post

db.Users.Where(u => !model.Salesmen.Any(m => u.Id == m.Id)).OrderBy(u => u.Name).ToList();

我得到的错误:

无法创建“Leads.Models.ApplicationUser”类型的常量值。此上下文仅支持原始类型或枚举类型。

我做错了什么,我该如何解决?

【问题讨论】:

  • 如果错误出现在上一篇文章中,你为什么要发新文章?
  • 你是怎么得到model.Salesmen的?
  • @Danieboy 错误不在前一点。那篇文章给了我 90% 的解决方案,但我的情况有点不同。

标签: c# entity-framework linq lambda where


【解决方案1】:

您不能将整个集合放入 lambda,因为 EF 无法将其转换为查询。这样做:

var salesMenIds = model.Salesmen.Select(s => s.Id);
db.Users.Where(u => !salesMenIds.Contains(u.Id)).OrderBy(u => u.Name).ToList();

【讨论】:

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