我正在编写ASP .NET MVC网站,而且我遇到了LINQ问题。我有一个简单的课程
public class Tag
{
public int TagId { get; set; }
public string Nome { get; set; }
... [other props]....
}
我想向视图传递一组分组的Nome。我尝试使用以下LINQ代码生成列表
var teste = (from t in db.Tags
group t by t.Nome into g
select new
{
Nome = g.Key
}).ToList();
ViewBag.ListaTags = teste;
没关系,但如果我在视图中使用以下代码
@foreach (var item in ViewBag.ListaTags)
{
@item.Nome
}
我收到一条错误消息,指出该对象项没有Nome属性。如果我尝试@item而不是@ item.Nome,它会显示{Nome =“Test”}。就像我有一个对象,但我无法访问它的属性。
答案 0 :(得分:0)
分组后,您将拥有格式化的结构,如::
Group.key1=> [value1,value2,value3],
Group.key2=> [value1,value2,value3],
Group.key3=> [value1,value2,value3]
如果你想显示分组的内容,那么你应该选择Grouped值,其Key为::
var teste = (from t in db.Tags
group t by t.Nome into g
select new
{
Nome = g.Key,
Id=g
}).ToList();
然后你可以在客户端显示为::
@foreach (var item in ViewBag.ListaTags)
{
<p>@item.Key </p>
foreach (var subitem in item.Values)
{
@subitem
}
}
答案 1 :(得分:0)
请看看这个Marc的answer。您可以转义POCO类并返回该对象,而不是返回匿名类型: -
var teste = (from t in db.Tags
group t by t.Nome into g
select new Nome
{
groupedNome = g.Key
}).ToList();
我在这里使用的POCO课程是: -
public class Nome
{
public string groupedNome { get; set; }
}
然后,您可以在View
中将其用作: -
@foreach (var item in ViewBag.ListaTags)
{
@item.groupedNome
}