高效地构建linq查询

本文关键字:查询 linq 构建 高效 | 更新日期: 2023-09-27 18:27:27

我有多个表,如

[Item]          [Items_Categorys]                [Categorys]  [Item_SubItem]
-Id              -Id                             -Id          -Id
-Title           -Item_ID [FK: Item]             -Text        -Title
-Description     -Category_Id [FK: Categorys]                 -Item_Id [FK:Items]
-Image

因此,我想让它成为如果它们进入Items/{item_id}页面,它会将项目、其类别、其子项等添加到视图中的位置。我创建了一个LocalModel,其中包含类别、子项等的IEnumerables。我的问题是,对linq-sql查询进行排序以同时获得所有这些信息的最佳方式是什么。目前,我只是为每个表使用一些for语句,并将它们存储到变量中,然后将这些变量放入我的LocalModel中发送到页面。

高效地构建linq查询

假设您已经定义了类Item,如下所示:

class Item
{
    .....
    public virtual ICollection<SubItem> SubItems { get; set; }
    public virtual ICollection<Category> Categories { get; set; }
}

因此,为了急切地加载SubItemsCategories,可以使用Include方法:

var item = dbContext.Items.Include(i => i.SubItems)
                          .Include(i => i.Categories)
                          .SingleOrDefault(i => i.Id = id);

还要确保你有:

using System.Data.Entity;

以便使用具有lambda样式的CCD_ 5。