将属性和值添加到 C# 列表
本文关键字:列表 添加 属性 | 更新日期: 2023-09-27 18:18:20
目标
将属性和值添加到列表。我正在使用C#/MVC 4/Razor。
问题所在
我有以下几点:
return PartialView("_CategoriesList", db.bm_product_categories.ToList());
好的,这里一切都很好。我的列表从数据库中返回多列,其中一列是Category_Name
。我想用 C# "蛊脏"每个类别名称,然后传递给视图。我在想这样的事情:
foreach (var categorySlug in db.bm_product_categories)
{
db.bm_product_categories
.Add({
"Category_Name_Slugged":
Helpers.Slugify(db.bm_product_categories.Category_Name)
});
}
但是,很明显,这种语法是错误的——我不知道该怎么办。
想法?
你可以使用这样的东西,如果你能复制数据并工作
var sluggifiedList = (from category in db.bm_product_categories
select category.CategoryName.Slugify()).ToList();
还
(from categoryName in db.bm_product_categories.CategoryName
select categoryName).ToList().ForEach
(category_Name => category_Name = category_Name.Slugigy());
可以使用 LINQ 投影更改后的模型,例如:
var sluggifiedProjection =
db.bm_product_categories
.ToList() // Need to materialize here. Ensure any filters applied before this.
.Select(cat => new
{
CategoryNameSlugged = Helpers.Slugify(cat.Category_Name)
// .. + other fields of bm_product_categories needed by your view
});
return PartialView("_CategoriesList", sluggifiedProjection);
创建一个匿名类的列表 - 显然你也可以创建一个新的类型化ViewModel
类,用于CategoryNameSlugged
并与你的视图共享这个类。参见 是否可以将匿名类型传递给我的 ASP.NET MVC 视图?
更新
根据链接的帖子,您可以将投影保留为匿名,然后在 Razor 视图中,使用动态或反射从列表中访问 CategoryNameSlugged
属性,或者(最好(您可以使用强类型ViewModel
类:
internal class SluggedCategoriesViewModel
{
public string CategoryNameSlugged {get; set; }
// Add any other properties from bm_product_categories that your view needs, e.g.
public int CategoryId {get; set; }
}
投影现在使用强类型ViewModel
类:
.Select(cat => new SluggedCategoriesViewModel
{
CategoryNameSlugged = Helpers.Slugify(cat.Category_Name),
CategoryId = cat.Category_Id // etc
});
List<bm_product_categories> list = new List<bm_product_categories>();
foreach(string name in list.Select(x => x.Category_Name))
{
slugifiedList.Add(name.Slugify()); // make extension method
}
或复制List<bm_product_categories>
并更改Category_Name属性