c# - 基于相同 ID 过滤数据
问题描述
我有一个模型课
public class Model
{
public string name { get; set; }
public string files { get; set; }
}
我有一个控制器类,将数据库中的数据填充到这个模型中
List<Model> model = new List<Model>();
while (reader.Read()){
var om = new Model();
if (reader != null)
{
om.name = reader.GetString(0);
om.files = reader.GetString(1);
model.Add(om)
}
如何过滤和合并具有相似名字的所有文件?
我阅读了关于 linq 并尝试了这个
var jm = om.name
.Where(o => om.name.Contains(o))
.Select() ;
解决方案
这可能对您有用:
var grouped = model.GroupBy(m => m.name).ToArray();
这将创建一个grouped
类型的对象IGrouping<string, Model>[]
(数组IGrouping...
)
.ToArray()
是可选的,如果你删除它,你会得到IEnumerable<IGrouping<string, Model>>
,但不要让嵌套<>
吓到你。
原始列表中的项目按名称分组,因此该组的Key
属性对于组中的每个元素都是相同的。
要打印结果,例如:
foreach(var group in grouped)
{
Console.WriteLine($"Printing group: {group.Key}");
foreach(var model in group)
{
Console.WriteLine($"\tName: {model.name}, File: {model.file}");
}
}
请注意,组中的每个元素都是模型对象的集合。
使用调试器查看该结构的外观以及是否需要更多帮助 - 询问...
推荐阅读
- javascript - like button 什么也没做,不知道是什么问题
- javascript - 如何使用 ES6 在数组中存在的字符串中查找单词?
- python-3.x - bsddb3 无法读取整个文件
- r - LAPACK 的 `dtrcon` 底层算法
- javascript - 使用 JQuery 更改输入字段的值后如何刷新输入字段?
- java - 在画布上绘制的每个位图之间添加边距
- css - CSS:以 Bootstrap 形式垂直对齐输入
- python - 在 Python/Pandas 中检查发票/账单中是否存在多个项目
- mysql - 有没有办法从“ER_DUP_ENTRY”错误中找到重复的行 ID
- java - 使用嵌套对象列表反序列化 json