从这样的表开始:
| 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/