繁体   English   中英

Linq分组获取多个属性

[英]Linq grouping get multiple properties

我正在尝试按CategoryId分组并显示CategoryId +该组的Name属性,我需要修改此代码的帮助,以便可以显示Name属性,请查看下面的视图以了解我的意思。

数据库

项目类别
int ItemId
int CategoryId

类别
int CategoryId
诠释? ParentId
字串名称

var itemcategories = db.Fetch<ItemCategory, Category>(@"SELECT * FROM ItemCategory LEFT JOIN Category on Category.CategoryId = ItemCategory.CategoryId WHERE ItemId = @0", item.ItemId);


var grouped = from b in itemcategories
               where b.Category.ParentId != null
               group b by b.Category.ParentId ?? 0 into g
               select new Group<int, ItemCategory> { Key = g.Key, Values = g };

public class Group<K,T>
{
    public K Key;
    public IEnumerable<T> Values;
}

视野中

@foreach (var group in @Model.ItemCategories)
{
  @group.Key **Category.Name should be displayed here**
}
foreach (var value in group.Values)
{
   @value.Category.Name
}

我认为您正在寻找此处提供的答案: LINQ中的分组依据
但是,您还应该更改数据库查询,以使其返回联接的实际结果,而不仅仅是IEnumerable<ItemCategory>
Group类看起来像:

public class Group<K,T>
{
    public K Key;
    public IEnumerable<T> Values;
    public IEnumerable<string> CategoryNames;
}

请注意,如果ParentId分组,则您的密钥将始终是ParentId ,这就是GroupBy函数的想法。
使用该新的Group类和数据库查询,您应该能够使用g.Name作为CategoryNames的参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM