我正在做类似亚马逊礼品卡系统的asp.net mvc3应用程序。我有一个名为Cards的模型,它与模型Users,cardStatus,paymentMethod和cardHistory有关。我正在做一个网格,我显示所有卡片的数据(创建者,初始数量,状态)。我正在使用WebGrid来显示数据。该卡可以及时拥有多个状态,当我添加Controller时,asp生成了这段代码:
public ViewResult Index()
{
var cards= db.cards.Include(t => t.cardStatus).Include(t => t.paymentMethod).Include(t => t.users);
return View(cards.ToList());
}
问题是我需要在webgrid中显示最新的卡状态,但生成的查询会显示所有状态,因此它在webgrid中显示错误“column cardStatus.status.name不存在” 这是我的webgrid代码:
@grid.GetHtml(
headerStyle: "header",
tableStyle: "table table-striped table-bordered table-hover",
columns: new[] {
grid.Column("cardId", header: "Card"),
grid.Column("user.ID", header: "Creator"),
grid.Column("initialAmount", header: "Amount"),
grid.Column("cardStatus.status.name", header: "Status")
}
) 我已经尝试了一些LINQ语句,但我是新手,所以它不起作用。如何才能带来所有的卡信息,但只有最新的状态?感谢
答案 0 :(得分:0)
cardStatus
是Card-object的所有状态的集合,对吧?我会在你的卡级中添加一个属性:
public partial class Card {
public CardStatus LastStatus
{
get
{
return cardStatus.Last();
}
}
}
如果您需要多次访问最后一个状态,那将非常有用。 您可以在WebGrid中添加列,如下所示:
grid.Column("LastStatus.name", header: "Status")
您还可以使用LINQ-Query解决您的问题。有关这方面的帮助,请访问:MSDN: 101 LINQ Samples(特别是连接运算符非常有用:LINQ - Join Operators)
托马斯