LINQ to 实体检索相关实体或 T-SQL

本文关键字:实体 T-SQL 检索 to LINQ | 更新日期: 2023-09-27 17:56:26

我有这些(简化的)模型:

class Vendor
{
    public int Id { get; set; }
    public IEnumerable<Product> Products { get; set; }
    public IEnumerable<Booth> Booths { get; set; }
}
class Show
{
    public int Id { get; set; }
    public IEnumerable<Booth> Booths { get; set; }
}
class Booth
{
    public int VendorId { get; set; }
    public Vendor Vendor { get; set; }
    public int ShowId { get; set; }
    public Show Show { get; set; }
}
class Product
{
    public int Id { get; set; }
    public int VendorId { get; set; }
    public IEnumerable<ProductPic> Pics { get; set; }
}
class ProductPic
{
    public int Id { get; set; }
    public int ProductId { get; set; }
    public string Uri { get; set; }
}

我不在乎我是否使用 LINQ 或

IEnumerable<Vendor> vendorsWithProductsAndPicsInShow = db_.Vendors.SqlQuery(sql).AsEnumerable();

我只希望结果是供应商列表,以及他们的产品和特定节目中的产品图片。

我正在尝试通过查询展位来解决这个问题,例如

Vendor[] vendorsInShow = (from b in db_.Booths
                        .Include(m => m.Vendor)
                        .Include(m => m.Vendor.Products)
                        .Where(m => m.ShowId == showId && m.Vendor.Products.Count > 0)
                            select b.Vendor).AsNoTracking().ToArray();

但该查询最终不包括产品,我仍然需要检索每个产品的 ProductPics。

我需要在这里做什么?

LINQ to 实体检索相关实体或 T-SQL

您可以尝试从供应商中进行选择并使用Any()进行ShowId。

Vendor[] vendorsInShow = (from v in db_.Vendor
      .Include("Products.Pics")
      .Where(m => m.Booths.Any(a => a.ShowID == showId) 
           && m.Products.Count > 0)
   select v).AsNoTracking().ToArray();