首页 > 解决方案 > 基于相同 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() ;

标签: c#asp.net-mvclinq

解决方案


这可能对您有用:

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}");
    }
}

请注意,组中的每个元素都是模型对象的集合。

使用调试器查看该结构的外观以及是否需要更多帮助 - 询问...


推荐阅读