我是 LINQ 的新手,需要一些查询帮助。

我需要所有来自 (tblResources) 的 资源 属于 Anonymous 公共(public) ResourceGroups (tblResourceGroups)。此外,我还需要属于 currentUser 所属的任何 ResourceGroups 的所有 资源

如果 currentUser 没有登录(currentUser == null),那么只有 属于 匿名 的资源 公共(public) ResourceGroups 应该返回

注意:我的数据模型不包含 tblResourceAccess 的实体。我不确定为什么在创建模型时没有添加这个实体。

        string currentUser = IdentityHelper.GetUserIdFromRequest(Context.Request);

        var result = from r in DbContext.Resources
                     where r.Active == true // && r.ResourceGroups?????
                     select new
                     {
                         ResourceTypeName = r.ResourceType.Name,
                         Name = r.Name,
                         Version = r.Version,
                         Description = r.Description,
                         Path = r.Path,
                         Active = r.Active
                     };

c# - 使用 Linq 查询的帮助-LMLPHP

c# - 使用 Linq 查询的帮助-LMLPHP

最佳答案

tblResourceAccess 被 EF 抽象掉,ResourceGroups 属性被添加到 Resource 表中以提供功能。使用这种关系,我们可以拼凑以下查询:

from r in DBContext.Resources.ToList()
where (currentUser == null
        && ("anonymous,public").Contains(
            r.ResourceGroups.Name.ToLower()))
    || (currentUser != null)
select new
    {
        ResourceTypeName = r.ResourceType.Name,
        Name = r.Name,
        Version = r.Version,
        Description = r.Description,
        Path = r.Path,
        Active = r.Active
    };

关于c# - 使用 Linq 查询的帮助,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34315043/

10-10 16:59