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语句?
注意:写错误可能会发生,因为我没有复制代码,而是为这里重写了它。
在返回的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();
}