在linq中使用contains
本文关键字:contains linq | 更新日期: 2023-09-27 18:20:49
我有一个过滤列表,它从MenuTable 返回所有distinctId
var _parentList = _employee.Designation.Role.MenuRoles
.Select(x => new
{
MenuParentID = x.Menu.ParentID
})
.DistinctBy(x => x.MenuParentID)
.OrderBy(x => x.MenuParentID)
.ToList();
我想从_parentList
中的menutable
中选择所有项目
这是我尝试过的,_parentList.Contains(x.Id)
上出现了一个错误,上面写着Best overloaded match for System.Generic.contains has some invalid arguments.
MenuParentList = _db.Menus.Where(x => _parentList.Contains(x.Id))
.Select(x => new SMS.Models.ViewModel.DashboardVM.MenuParent
{
MenuParentID = x.Id,
MenuParentName = x.MenuName
})
.ToList()
如有任何帮助,将不胜感激
Cf。此代码:
.Select(x => new
{
MenuParentID = x.Menu.ParentID
})
这将生成一个匿名对象列表,其中包含一个名为MenuParentID的属性,而不是一个整数列表。编译器为您创建了一个结构如下的类型(请注意,编译器在后台生成了一个不可用的类名,而不是AnonymousType1
,但您已经明白了):
class AnonymousType1
{
public int MenuParentID {get;set;}
}
而CCD_ 6将是CCD_。
调整您的代码如下:
var _parentList = _employee.Designation.Role.MenuRoles
.Select(x => x.Menu.ParentID)
.Distinct()
.OrderBy(id => id)
.ToList();
现在_parentList
属于List<int>
类型。
您可以在msdn上阅读有关匿名类型概念的更多信息:https://msdn.microsoft.com/en-us/library/bb397696.aspx