【问题标题】:Using linq to filter a list from a list使用 linq 从列表中过滤列表
【发布时间】:2017-11-08 18:18:19
【问题描述】:

我正在生成两个具有 int 值的列表,并使用 linq 选择列表 2 中未找到的列表 1 的所有 id:

var clerkRole = db.Roles.SingleOrDefault(m => m.Name == "Clerk");
List<ApplicationUser>lstUser = db.Users.Where(x => x.Roles.Select(y => y.RoleId).Contains(clerkRole.Id)).ToList();
List<int> lstUId = lstUser.Select(c => c.Id).ToList();

var alldps = db.Deposits.Select(a => a.UserId).Distinct().ToList();

var clerkNotIn = lstUId.Except(alldps).ToList();  // error here and below

我收到以下错误:

错误 25 'System.Collections.Generic.List' 不包含 'Except' 的定义和最佳扩展方法重载 'System.Linq.ParallelEnumerable.Except(System.Linq.ParallelQuery, System.Collections.Generic. IEnumerable)' 有一些无效参数

你能帮忙吗?谢谢

【问题讨论】:

    标签: c# asp.net-mvc linq


    【解决方案1】:

    我打赌您缺少 Linq 命名空间,请在开头添加:

    using System.Linq;
    

    还要更改 var 以确保 UserId 是 int。这不会产生任何影响,除非 UserId 实际上不是 int,然后您将收到错误指示 UserId 不是 int

    List<int> alldps = db.Deposits.Select(a => a.UserId).Distinct().ToList();
    

    【讨论】:

    • 感谢错误是因为 userId 可以为空我添加了 .value 并解决了错误
    猜你喜欢
    • 2014-04-28
    • 1970-01-01
    • 2011-07-02
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多