c# linq:获取由列表中的值过滤的结果列表

本文关键字:列表 过滤 结果 linq 获取 | 更新日期: 2023-09-27 18:12:12

我已经得到了下面的声明(我需要在这里更改它们的名称)。实际上,我有一个特定的用户id,并且想要过滤哪些文件夹不是由该用户创建的,而是有他的一个文件夹作为父文件夹)。

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

的定义
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 . collections . generic . list <....>.

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

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

c# linq:获取由列表中的值过滤的结果列表

在返回的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();
        }