繁体   English   中英

C#linq:获取按列表中的值过滤的结果列表

[英]c# linq: getting a list of results filtered by values in a list

我在下面有以下语句(略微缩写,因为我希望更改名称以便在此处发布它们)。 本质上,我有一个特定的用户ID,并且想要过滤哪些用户创建的文件夹不是由该用户创建的,而是以他的文件夹之一作为父文件夹。

编辑:到目前为止的代码(数据库中的目录包含int DirectoryId,int ParentDir,String UserId,String Path),这里的Directory定义

public partial class Directory
{
public int DirectoryId { get; set }
public Nullable<int>ParentDir {get; set;}
public string UserId { get; set; }
public string Path { get; set; }
}

这里的代码:

 public static List<Directory> GetAllNonUserDirs(string userId)
        {
            MYEntities entity = new MYEntities();
            List<int> DirectoriesOfUser = (from i in entity.Directory
                                                 where (i.UserId == userId)
                                                 select i.DirectoryId).ToList();
            return (from i in entity.Directory where (i.UserId != userId && i.ParentDir.HasValue 
             && DirectoriesOfUser.Contains(i.ParentDir.Value)) select i);
        }

现在的问题是,sas错误“无法将类型'System.Linq.IQueryable <....>隐式转换为System.Collecitions.Generic.List <....>。

我的问题是如何解决此问题(这是由我已经确定的包含部分引起的),还是有一种更简单的方法来执行linq语句?

注意:Writeerrors可能发生,因为我没有复制代码,而是在这里重写了代码。

在要返回的LINQ之后添加ToList() 如下所示:

 public static List<Directory> GetAllNonUserDirs(string userId)
        {
            MYEntities entity = new MYEntities();
            List<int> DirectoriesOfUser = (from i in entity.Directory
                                                 where (i.UserId == userId)
                                                 select i.DirectoryId).ToList();
            return (from i in entity.Directory where (i.UserId != userId && i.ParentDir.HasValue 
             && DirectoriesOfUser.Contains(i.ParentDir.Value)) select i).ToList();
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM