簡體   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