データベースから値を返すために EF と Linq を使用しています。私はFolder
構造を持っており、フォルダには のFolder
リスト または のリストを含めることができますDevice
。私が望むのは、Device
フォルダーに属するフォルダーを含むフォルダー内 (またはフォルダーの下) にあるすべての のリストを作成できるようにすることです (子ディレクトリも含む最上位ディレクトリ内のすべてのファイルを表示したいとします)。 .
ここでの本当のキッカーは、多くのデバイスが存在する可能性があることです。そのため、ページネーションが必要です。理想的には、結果セットが返される前にクエリを並べ替えてページネーションできるように、これはすべて LINQ で行われます。
これが私のセットアップの基本的なバージョンです(キー、注釈、その他のものは簡単にするために削除されています)
public class Folder
{
public virtual ICollection<Folder> Children { get; set; }
public virtual ICollection<Device> Devices { get; set; }
}
// This is the function I currently have that only returns 1 folder
// needs to somehow be expanded to return devices for all folders beneath it too
function GetFolderDevices(int folderId, PaginationOptions options)
{
// Get all folders and devices
using (var dbObj = this.context.CreateDBContext())
{
EMDB.Models.Folder folder = dbObj
.AddressBook
.Include(a => a.Devices.Select(d => d.Settings))
.FirstOrDefault(f => f.FolderId == folderId);
// apply pagination here (already taken care of)
}
}