我不确定标题是否准确描述了这种情况,但我正在尝试!
我有一个具有Category值的Project对象列表,我基本上想要“反转”列表,使其成为项目中存在的类别和属于它们的项目的明确类别列表。
所以,而不是:
Project1
-> Category1
Project2
-> Category2
Project3
-> Category1
我想:
Category1
-> Project1
-> Project3
Category2
-> Project2
目前我正在做两个linq语句,第一个是抓住不同的类别,第二个是选择具有特定类别的项目,并创建一个包含Category和Projects(项目列表)属性的对象的新列表。
我知道由于EF,我需要为Category / Projects对象创建一个类,但是想知道我是否可以使用一个语句而不是两个语句构建列表?
谢谢!
这是我目前使用的代码
// This just pulls the unique categories belonging to the projects
string[] categories = dbm.GetProjectCategories().ToArray();
foreach(string category in categories)
{
// This pulls the projects with the specific category
Project[] projects = dbm.GetProjects(category).ToArray();
// New object with the specific category and the projects belonging to it.
projlst.Add(new CategoryProjectsItem(category, projects));
}
我知道使用EF而不是直接使用ADO.NET会有所不同。
这些来自同一个项目表。
答案 0 :(得分:1)
我捅了更多,然后想出来了! 这是一个简单的例子:
<强> CategoryProjectsItem 强>
public class CategoryProjectsItem
{
public string Category { get; set; }
public List<Project> Projects { get; set; }
}
在我的方法中拉出倒置列表
var rlt = await db.Projects2.GroupBy(c => c.Category)
.Select(p => new CategoryProjectsItem()
{
Category = p.Key,
Projects = p.Select(r => new Project() {
ID = r.ID,
Name = r.Name,
Category = r.Category
}).ToList()
}).ToListAsync();