向List添加属性和值。我正在使用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)
});
}
但是,显然,这种语法是错误的 - 我不知道该怎么做。
想法?
答案 0 :(得分:2)
如果你可以复制数据并且工作
,你可以使用这样的东西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());
答案 1 :(得分:1)
您可以使用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
类,并与您的View共享此类。另请参阅Can I pass an anonymous type to my ASP.NET MVC view?
<强>更新强>
根据链接的帖子,您可以将投影保留为匿名,然后在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
});
答案 2 :(得分:0)
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属性