vb.net - 从集合中获取数据 'less common as possible'

标签 vb.net linq group-by

从这样的表开始:

| Code | Year |
---------------
| A01  | 2001 |
| A01  | 2002 |
| B01  | 2002 |
| C01  | 2003 |

我必须达到这个目的:

| Code | Year |
---------------
| A01  | 2001 |
| B01  | 2002 |
| C01  | 2003 |

我必须对第一列(代码)进行分组,从第二列(年份)开始,我必须获取与所有其他记录相比“尽可能不常见”的数据。我尝试用示例来解释这一点:对于代码“A01”,我有 2 年:“2001”和“2002”。我必须选择“2001”,因为它在其他记录中没有重复出现。如果没有在其他记录中重复出现的可用值“年份”,则最好采用任何值。

数据在内存中以数组的形式存在,为了与它们交互,我使用了一些 LINQ 查询。

提前谢谢您! 皮莱吉

最佳答案

很抱歉用 C# 制作它。希望您将其转换为 VB.NET 时不会遇到问题。

var filteredItems = items
    .Select(cod => cod.Code).Distinct()
    .Select(cod => items.OrderBy(itm => itm.Year).First(itm => itm.Code == cod))
    .ToList();

测试代码:

public class Item
{
    public string Code { get; set; }

    public string Year { get; set; }
}

public static void Main(string[] args)
{
    var items =
        new List<Item>
        {
            new Item{ Code = "A01", Year = "2001" },
            new Item{ Code = "A01", Year = "2002" },
            new Item{ Code = "B01", Year = "2002" },
            new Item{ Code = "C01", Year = "2003" },
        };

    var filteredItems = items
        .Select(cod => cod.Code).Distinct()
        .Select(cod => items.OrderBy(itm => itm.Year).First(itm => itm.Code == cod))
        .ToList();
}

关于vb.net - 从集合中获取数据 'less common as possible',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6009837/

相关文章:

vb.net - 如何强制模块初始化(VB Windows 应用商店应用程序)?

xml - 将大型 XML 文件切割成小块

mysql - 普通列后跟聚合函数但不在分组依据中

python - Pandas groupby 累计总和

mysql - GROUP BY 也选择非常量列

javascript - 按钮单击事件后更新 UpdatePanel

MySQLCommandBuilder 和外键

c# linq 按日期时间分组到最接近的秒

c# - 使用 LINQ 检查是否所有值都是 "0"?

c# - 首先按字母值对列表排序,然后按数值排序