簡體   English   中英

如何將 EF Core/LINQ 查詢轉換為列表<SelectList> ?

[英]How to turn a EF Core/LINQ query into a List<SelectList>?

我有以下類別模型:

public class CategoryDTO
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<SelectList> WarehouseNames { get; set; }
}

倉庫型號:

public class Warehouse
{
public int Id { get; set; }
public string Name { get; set; }
public string Location { get; set; }
public int MaxCapacity { get; set; }   
}

我想在我的數據庫中獲取所有 Warehouse.Id 和 Warehouse.Name 並將它們存儲在 CategoryDTO.WarehouseNames(值:Id,文本:名稱)中,以便我可以在下拉列表中顯示它們。 有人知道我該怎么做嗎?

修復Dto到List,也許你也需要添加一個WarehouseId???

public class CategoryDTO
{
    public int Id { get; set; }
    public string Name { get; set; }

    public int WarehouseId { get; set; } //????
    public List<SelectListItem> WarehouseNames { get; set; }
}

在你的行動應該是這樣的

var model= new CategoryDTO();

var wareHouseNames = context.Set<Warehouse>()
                    .Select ( i=>  new SelectListItem {
                     Text = i.Name,
                     Value = i.Id
                    }).ToList();
model.WareHouseNames = wareHouseNames ;

return View(model)

並查看

@model CategoryDTO


<select class="form-control"  asp-for="@WarehouseId" asp-items="@WareHouseNames">
         <option value="0" >Select</option>
</select>

您可以將“公共列表”放入字典,並使用“倉庫”對象中的鍵作為 Id 和值作為名稱。

我認為您想完全從CategoryDTO類型中刪除WarehouseNames屬性,而不是填充一個CategoryDTO對象,而是填充List<CategoryDTO>或(甚至更好!) IEnumerable<CategoryDTO>

然后,您將能夠將這些 CategoryDTO 項目映射到下拉列表/HTML Select實體。 但是,具體情況取決於您的問題中尚未包含的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM