从列表项distinct属性中恢复列表项

时间:2016-10-14 12:12:45

标签: c# list lambda distinct

给出以下简单属性

Class Data
{
        public string AA { get; set; }
        public int    BB { get; set; }
        public int    CC { get; set; }
        ...
    }

和数据项列表

List<Data> Items = new List<Data>;

有一些示例数据

"2002", 3 ,5 ..
"2002", 3 ,5 ..
"2006", 4 ,2 ..
"2002", 3 ,5 ..
"2018", 9 ,7 ..
"2018", 5 ,5 ..

我需要找到字符串AA的distint值,所以我可以使用以下代码

   foreach(var itm = Items.Select(x => x.AA).Distinct()))
   {
       use itm ...
   }

corectly返回itm = string&#34; 2002&#34;,&#34; 2006&#34;和&#34; 2018&#34;,但是我还需要恢复一些剩余的属性,例如BB等,用于&#34; Distinctly Selected&#34;项目,也将与主要领域明显相关。

我尝试过manys方法来尝试实现这一目标,但一直没有成功,所以如果有人能指出如何实现这一点,那将会很感激。

我试图恢复该项目的索引,返回基本项目,即返回时工作的数据 列表中的所有项目。

实际上有成千上万的数据项,我需要恢复链接到distint数据项的字段。

我目前有一个可行的解决方案,我在其中提取不同的项目,然后使用生成的列表搜索第一个匹配的项目,然后恢复数据。它可以工作但不是很精致,因为我必须在列表中处理额外的时间。

注意此解决方案中没有SQL选项,提供的数据是XML或JSON解决方案必须是独立的exe

欢迎评论

由于

2 个答案:

答案 0 :(得分:1)

Distinct只是一个没有任何聚合的组。你想要的是在Items.GroupBy(x => x.AA, x => x, (x,grp) => grp.First()) 上分组然后聚合这些值,特别是你想要进行第一场比赛,这可以这样做。

{{1}}

答案 1 :(得分:0)

创建另一个变量并在该变量上应用group by它应该可以工作。

var another_item = Items.GroupBy(x => x.AA).ToList();
foreach(var itm in another_item)
{
  use itm ...
}