[英]Nested new result from entity framework query
我有一个按关键字和区域过滤“检查员”的功能。 “检查员”与“区域”之间的关系是多对多的。
public IQueryable<Inspector> Search(string keywords, int? areaId)
{
var qry = this.GetAllInspectors();
if (!String.IsNullOrEmpty(keywords))
qry = qry.Search(keywords);
if (areaId.HasValue)
qry = qry.ByAreaId(areaId.Value);
var search = from a in _entities.Areas
select new InspectorSearchResult
{
Area = i.Areas,
Inspectors = (.....).ToList()
}; // ??
return qry.OrderBy(i => i.LastName).ThenBy(i => i.FirstName);
}
InspectorSearchResult.cs
public class InspectorSearchResult
{
public Area Area { get; set; }
public List<Inspector> Inspectors { get; set; }
}
如何修改该查询以嵌套形式仅获取“按区域检查员”?
更新:
对此进行了尝试,但得到:“ ...方法无法转换为商店表达式。”
public List<InspectorSearchResult> Search(string keywords, int? areaId)
{
var qry = this.GetAllInspectors();
if (!String.IsNullOrEmpty(keywords))
qry = qry.Search(keywords);
if (areaId.HasValue)
qry = qry.ByAreaId(areaId.Value);
var search = from i in qry
from a in i.Areas
orderby a.AreaName
select new InspectorSearchResult
{
Area = a,
Inspectors = (from ins in a.Inspectors
orderby ins.LastName, ins.FirstName
select ins).ToList()
};
return search.ToList();
}
这是您要达到的目标吗?
public List<InspectorSearchResult> Search(string keywords, int? areaId)
{
var qry = this.GetAllInspectors();
if (!String.IsNullOrEmpty(keywords))
qry = qry.Search(keywords);
if (areaId.HasValue)
qry = qry.ByAreaId(areaId.Value);
var search = from i in qry
from a in i.Areas
orderby a.AreaName
select new InspectorSearchResult
{
Area = a
};
foreach(var x in search)
{
x.Inspectors = (
from ins in a.Inspectors
orderby ins.LastName, ins.FirstName
select ins)
.ToList();
}
return search.ToList();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.