c# - 根据列表的元素对同一对象进行分组
问题描述
我有以下类型的对象列表,Application
如下所示:
public class Application
{
public int AppId { get; set; }
public List<Question> Questions { get; set; }
}
我想要做的是将它们映射到如下类型的对象Section
:
public class Section
{
public List<int> AppIds { get; set; }
public List<Question> Questions { get; set; }
}
通过根据以下规则对它们进行分组:将所有相同的问题收集到包含这些问题的 AppId 列表下。示例性输入和输出:
Input: A1(Q1,Q2,Q3), A2(Q1,Q2), A3(Q1,Q3), A4(Q1).
Output: A1,A2,A3,A4(Q1), A1,A2(Q2), A1,A3(Q3)
在LINQ中可以做到吗?还是我必须自己编写逻辑?
解决方案
也许有一种更简单的方法,但这是LINQ
我写的第一个查询,至少应该足以让您入门。首先,我将您的问题和 appid 展平,然后按问题重新分组,并按问题列出您的 appid。请注意,您必须先填充您List
的应用程序,然后才能运行。
List<Application> app = new List<Application>();
var output = (from a in app.SelectMany(p => p.Questions.Select(z => new {z, p.AppId})
group a.AppId by new
{
a.Questions
} into combined
select new
{
combined.Key.Questions,
combined.ToList()
});
推荐阅读
- java - NoSuchMethodError exception in production
- android - 在主/明细流中搜索
- python - 将返回的函数值存储在列表中 WXpython
- alpine - /usr/bin 中的链接 '"[" & "[[" 是什么
- python-3.x - 结合浏览方法和 os.listdir 文件排序脚本
- ms-access - MSAccess - 选择并插入到块中?
- c# - WPF数据网格组合框列未绑定
- python - 脏属性会影响 session.query
- r - kmeans() 的结果不会因运行而异
- javascript - angular5中聊天应用程序中的时间显示错误