c# - 将属性添加到列表中的项目

标签 c# asp.net asp.net-mvc-3 list razor

所以我刚刚开始使用 ASP.NET MVC,并且遇到了一个我无法找到答案的问题。

我从 SQL 数据库中获取一些数据,并使用以下代码将其发送到 View :

var listingsQuery = (from s in db.tblListings select s).OrderBy(s => s.listingID).Skip(100).Take(25);
var listings = listingsQuery.ToList();

return View(listings);

这很好用,但我想在结果列表中添加一个值。基本上我想做的是这样的:

foreach (var item in listings)
{
    this.Add("propertyType", "Home");
}

但显然这是行不通的。我尝试过使用 ToArray() 而不是 ToList(),但这毫无结果。

最佳答案

您想为 List 集合中的每个对象添加新属性吗?如果是这样,您可以创建一个继承列表中任何对象类型的新类型(将鼠标悬停在listingsQuery变量上 - 该类型位于<>符号内)并向其中添加新属性:

public class MyNewType : ExistingTableType
{
    public string PropertyType { get; set; }
}

然后在查询内部,将属性投影到这个新类型中:

var listingsQuery = (from s in db.tblListings  
                     orderby s.listingID
                     select new NewType
                     {
                         listingID = s.listingID,
                         someOtherField = s.someOtherField
                     }
                    ).Skip(100).Take(25);

现在您可以循环浏览每条记录并分配一个值:

foreach(var record in listings)
{
   record.ProperyType = "Home";
}

还有其他方法可以做到这一点(假设您使用的是 EF),例如,如果您使用原始 SQL,您可以将结果类型直接转换为新类型(无需映射每个字段),但是这应该可以帮助您入门。

关于c# - 将属性添加到列表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11404743/

相关文章:

asp.net - 如何在两个不同的文件夹中应用asp.net授权?

c# - 如何使用 C# MailMessage 检查电子邮件是否已送达

c# - ASP.net 在尝试将文件上传到我的 Windows Server 2008 R2 Web 服务器时出现错误 "Access to the path is denied."

.net - 尝试删除多个对象时NHibernate TooManyRowsAffectedException

c# - 如何在字符串运算符的帮助下比较存储在字符串中的两个日期?

c# - 使用 AutoMapper 从接口(interface)映射到具体类型

c# - 按引用传递并存储对变量的引用 - C#

c# - 如何在 .Net 中使用 32 位 alpha 混合 BMP

c# - 避免在 View 中添加 if/else 逻辑

asp.net-mvc-3 - 如何在 ASP.NET MVC 上禁用 TRACE Http 方法