1.首先使用确保Linq查询是没有问题的,我的查询为:
var query = from menu in Context.Set<MenuInfo>()
join role_menu in Context.Set<RoleMenu>()
on menu.MenuId equals role_menu.MenuId
where roles.Contains(role_menu.RoleId) && menu.State == 1
select menu;
var tmp = query.Distinct().ToList();
2、这里tmp的数据类型是:List<MenuInfo>
3、这样执行后发现tmp那一行报错,查了很久发现是数据库中的某些数据是Null,如果确定数据库中想要保存的数据是空值的话那就在Linq转换为List集合前加上:DefaultIfEmpty()。通过调用DefaultIfEmpty()
方法,即使查询结果为空,它也会返回一个包含默认值Null的元素
变为:
var tmp = query.DefaultIfEmpty().Distinct().ToList();
备注:在旧版本的EFCore中可能最开始的写法就是正确的,不需要加上DefaultIfEmpty()就能正确运行