使用linq从列表中筛选列表

时间:2017-11-08 18:18:19

标签: c# asp.net-mvc linq

我正在使用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)'有一些无效的参数

你可以帮忙吗?感谢

1 个答案:

答案 0 :(得分:2)

我打赌你错过了Linq命名空间,在开头添加:

using System.Linq;

同时更改var以确保UserId为int。这不会产生任何影响,除非UserId实际上不是int,否则您将收到错误消息,表明UserId不是int

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