[英]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.