所以我刚刚开始使用ASP.NET MVC,我遇到了一个我无法找到答案的问题。
我从SQL数据库中获取一些数据,并使用以下代码将其发送到视图:
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(),这让我无处可去。
答案 0 :(得分:4)
是否要为List集合中的每个对象添加新属性?如果是这样,您可以创建一个继承自列表中任何对象类型的新类型(将鼠标悬停在listingQuery变量上 - 类型在<>符号内)并向其添加新属性:
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,则可以将结果类型直接转换为新类型(不使每个字段都有映射),但是这应该让你开始。
答案 1 :(得分:1)
如果您想在列表集中添加新行,则需要执行listing.Add而不是this.Add
如果您想修改商品详情,请执行
foreach(var item in listings)
{
item.PropertyName = value;
}