Linq分组获得多个属性
本文关键字:属性 Linq | 更新日期: 2023-09-27 18:28:57
我正在尝试按CategoryId进行分组,并显示该组的CategoryId+Name属性,我需要帮助修改此代码,以便显示Name属性,请查看下面的视图,了解我的意思。
数据库
项目类别
int ItemId
int CategoryId
类别
int类别ID
int?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中按分组
但是,您还应该更改DB查询,以便它返回联接的实际结果,而不仅仅是IEnumerable<ItemCategory>
Group
类可能看起来像:
public class Group<K,T>
{
public K Key;
public IEnumerable<T> Values;
public IEnumerable<string> CategoryNames;
}
请注意,如果您想按ParentId
分组,您的键将始终是ParentId
,这是GroupBy
函数的想法
有了这个新的Group
类和DB查询,您应该能够使用g.Name
作为CategoryNames
的参数