我在下面有以下声明(我需要更改名称以便在此处发布)。本质上我有一个特定的用户标识,并希望过滤哪些文件夹已创建,这些文件夹不是由该用户创建的,而是将其中一个文件夹作为父文件夹。)
编辑: 到目前为止的代码(数据库中的目录包含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&lt; ....&gt;隐含地转换为System.Collecitions.Generic.List&lt; ....&gt;。
我的问题是如何解决这个问题(它是由我已经确定的包含部分引起的),还是有更简单的方法来执行linq语句?
注意:Writeerrors可能发生了,因为我没有复制代码,而是重写了这里。
答案 0 :(得分:0)
在您返回的ToList()
之后添加LINQ
。如下所示:
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();
}