我正在尝试返回一个有外键的实体而且我有点卡住了。尝试使用两个表的结果填充dropDownList。 ItemType和IndicatorType表之间存在外键关系。
代码是:
public async Task<PagedResults<ItemType>> GetAsync(int skip = 0, int take = -1)
{
PagedResults<ItemType> pagedResults;
try
{
IQueryable<ItemType> query = _dbSet.Include("IndicatorDetails");
query = take == -1
? query.OrderBy(i => i.IndicatorDetails.Code)
: query.OrderBy(i => i.IndicatorDetails.Code);
var data = await query.ToListAsync();
pagedResults = new PagedResults<ItemType>(data, skip, take, data.Count);
}
catch (Exception e)
{
throw new Exception(string.Format("Could not get item types from database. {0}", e.Message), e);
}
return pagedResults;
}
我可以让它只用于返回一行,因为我传入一个我可以在ItemType和IndicatorType类之间匹配的id,但是我无法弄清楚如何让_dbSet来做包含IndicatorDetails。
提前致谢。
答案 0 :(得分:0)
您可以随时加入两个表来进行查询 例如( j1 是 ItemType 而 j2 是 IndicatorType )
ViewBag.listItems = ItemType.Join(IndicatorType, j1 => j1.key, j2 => j2.key2, (j1, j2) => new {j1, j2}).AsEnumerable().Select( v => new SelectListItem() { Value = t.t1.userid.ToString(), Text = string.Format("{0} {1}", t.t1.firstName, t.t2.lastName) });
在视图中,您可以传递 ViewBag.listItems
@Html.DropDownListFor(m => m.userid, new SelectList(ViewBag.listItems,"Value","Text","-Sélections-"), new { @class ="form-control"})