1

我有两个实体,名称分别为“区域”和“庄园”关系

每个区域有许多屋苑(销售屋苑),每个屋苑有一个区域(一对多)

我想获取多个区域的庄园列表

这是我的代码:

var estates = _unitOfWork.Set<Sale>().AsQueryable();
IQueryable<Sale> filteredEstates = estates.Where(e => e.Status == 1);

if (requestBuy.Areas.Count > 0)
{
    filteredEstates = requestBuy.Areas.SelectMany(e => e.Sales).AsQueryable();
    //var filteredEstatesNew = new List<Sale>();
    //foreach (var area in requestBuy.Areas)
    //{
    //    filteredEstatesNew.AddRange(area.Sales.ToList());
    //}
    //filteredEstates = filteredEstatesNew.AsQueryable();
    //filteredEstates = filteredEstates.Where(e => e.Status == 1);
}

我认为我的方式是错误的!所以帮我怎么做?!

4

1 回答 1

1

我不知道你是如何实现你的工作单元和存储库的,但是如果你在实体框架中有一对多的关系(区域到庄园)并且你想获得过滤的庄园,那么你应该像这样使用 SelectMany:

var estates = areas.Where(a => a.Foo == Bar) // area filter
                   .SelectMany(a => a.Estates)
                   .Where(e => e.Status == 1); // estate filter

或者使用查询语法

var estates = from a in areas
              where a.Foo == Bar  // area filter
              from e in a.Estates // SelectMany
              where e.Status == 1 // estate filter
              select e;
于 2013-09-23T07:39:06.397 回答