我有以下IQueryable对象:
var user = from d in _context.Users
join userRole in _context.UserRoles on d.Id equals userRole.UserId
join role in _context.Roles on userRole.RoleId equals role.Id
where role.Name == "Liquidador"
select d;
然后将其作为ViewBag发送到视图:
ViewBag.UserID = new SelectList(user.AsNoTracking(), "UserName", "Name", selectedUser);
问题:
我需要在IQueryable的结果中添加一个新Item。所以我这样做了:
var UserNameList = user.Select(s => new { s.Name, s.UserName }).ToList();
但是,当我尝试添加新项目时,我错过了一些内容:
UserNameList.Insert(0, new *NewWhat?* { Name = "Liquidador", UserName = "--Select--"} );
通常我会声明特定模型的新元素,但在这种情况下,我不知道要为此IQueryable声明哪个模型。任何推荐?
由于
编辑:
IQueryable对象作为函数的一部分转到View的Get方法:
public async Task<IActionResult> Management()
{
PopulateUserDropDownList();
var Tiendas = await _context.Stores.ToListAsync();
StoreEmployee model = new StoreEmployee
{
Stores = Tiendas
};
return View(model);
}
此列表随后显示在表格内的下拉列表中:
<td class="col-md-2">
<div class="form-group" form="@(String.Format("{0}{1}","form",item.StoreID))">
<div>
<select asp-for="@item.Usuario" class="form-control" asp-items="ViewBag.UserId" form="@(String.Format("{0}{1}","form",item.StoreID))"></select>
<span asp-validation-for="@item.Usuario" class="text-danger"></span>
</div>
</div>
</td>
答案 0 :(得分:0)
如果你定义一个类UserDTO
(或任何其他更喜欢你的名字),它似乎会更清晰。
public class UserDTO
{
public string Name { get; set; }
public string UserName { get; set; }
}
然后你做
var UserNameList = user
.Select(s => new UserDTO { Name = s.Name, UserName = s.UserName })
.ToList();
UserNameList.Insert(0, new UserDTO { Name = "Liquidador", UserName = "--Select--"} );
OTOH ...稍微添加空元素作为数据数组的一部分,我的建议是在剃刀视图上处理它,然后发送UserNameList
真实数据。 Dropdown razor方法包含重载以指定空元素文本。
如果您展示HTML,我们可能会帮助您实施更好的解决方案。