2

所以我刚开始使用 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() 但这让我无处可去。

4

2 回答 2

6

您想为 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,您可以将结果类型直接转换为新类型(无需映射每个字段),但这应该得到你开始了。

于 2012-07-10T00:25:37.217 回答
1

如果你想在你的列表集合中添加一个新行,你需要做 Listings.Add 而不是 this.Add

如果要修改列表集合中的值,则需要执行

     foreach(var item in listings)
     {
       item.PropertyName = value;
     }
于 2012-07-09T23:52:44.780 回答