我有以下我一直在处理的代码:
var menuItems = _contentRepository.GetPk("01" + pk + "000")
.OrderBy(m => m.Order)
.Select(m => new Menu.Item
{
PartitionKey = m.PartitionKey,
RowKey = m.RowKey,
Order = m.Order,
Title = m.Title,
Type = m.Type,
Link = m.Link,
TextLength = m.TextLength
});
返回 .GetPk 的字段之一是名为 Roles 的字段。这是一个字符串字段,其内容显示可以访问菜单的每个项目的角色。字段中的数据如下所示:
All
All,Admin
All,Admin, Super
Admin
Admin, Super
我有一个字符串 [] 角色,其中填充了用户拥有的角色。如果用户有一个角色,则字符串数组中有一项,如果用户有两个角色,则有两项。如果用户没有角色,则数组为空。
如果 string[] 角色中的条目与我的角色字段中的单词之一匹配,我怎样才能使我的选择只返回一个值?
到目前为止,我一直在做一些研究,我发现以下内容几乎可以满足我的需要。但是我怎样才能把它放到我上面的 Linq 中呢?
String[] roles = Roles.GetRolesForUser();
var links = from item in menus
where item.Roles.Split(new String[] { "," }, StringSplitOptions.RemoveEmptyEntries)
.Any(x => roles.Contains(x) || x == "All")
select item;