gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:26:18 26 4
gpt4 key购买 nike

从这样的表开始:

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

我必须到达这个:
| Code | Year |
---------------
| A01 | 2001 |
| B01 | 2002 |
| C01 | 2003 |

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

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

先感谢您!
皮莱吉

最佳答案

这是正确的答案(与亚历克斯·阿扎的答案进行比较:filteredItemsAlexAza 和filteredItemsSsithra 给出了不同的结果,因为不太常见的数据不再是最少的数据——这里是 2005 年而不是 2001 年的 A01)

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

var filteredItemsAlexAza = items.Select(cod => cod.Code).Distinct().Select(cod => items.OrderBy(itm => itm.Year).First(itm => itm.Code == cod)).ToList();
var filteredItemsSsithra = items
.Select(item => new { Item = item, NbItemsWithSameYear = items.Where(i => i.Year == item.Year).Count() })
.GroupBy(ano => ano.Item.Code)
.Select(group => group.OrderBy(ano => ano.NbItemsWithSameYear).First().Item)
.ToList();
}

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com