将属性和值添加到C#List

时间:2013-06-14 14:05:44

标签: c# asp.net-mvc-4 razor

目标

向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)
           });
}

但是,显然,这种语法是错误的 - 我不知道该怎么做。

想法?

3 个答案:

答案 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属性