【问题标题】:Group and enumerate in linq在linq中分组和枚举
【发布时间】:2016-04-03 22:01:31
【问题描述】:

请问,我怎样才能在 linq 中得到这个结果?一些提示?

List<Test> listTests = new List<Test>();

var item1 = new Test() { NumberFac = 915170958, Description = "aa" };

var item2 = new Test() { NumberFac = 915170956, Description = "bb" };

var item3 = new Test() { NumberFac = 915176287, Description = "cc" };

var item4 = new Test() { NumberFac = 915170956, Description = "dd" };

var item5 = new Test() { NumberFac = 915176287, Description = "aa" };

var item6 = new Test() { NumberFac = 915170958, Description = "mm" };

var item7 = new Test() { NumberFac = 915176287, Description = "ll" };

listTests.Add(item1);

listTests.Add(item2);

listTests.Add(item3);

listTests.Add(item4);

listTests.Add(item5);

listTests.Add(item6);

listTests.Add(item7);

结果

 #Num |NumberFac|Description

   1   |915170958| aa

   2   |915170958| mm

   1   |915170956| bb

   2   |915170956| dd

   1   |915176287| cc

   2   | 915176287| aa

   3   |915176287 | ll  

【问题讨论】:

  • 到目前为止你尝试了什么。我们是来帮忙的。尝试解决问题。
  • 你试过this吗?

标签: c# linq


【解决方案1】:

给你

var result = listTests
    .GroupBy(e => e.NumberFac)
    .SelectMany(g => g.Select((e, i) => new { Num = i + 1, e.NumberFac, e.Description }))
    .ToList();

首先,GroupBy 用于按NumberFac 对项目进行分组,然后使用SelectMany 来展平结果,并使用Select 的特殊重载提供元素索引以在组内生成#Num

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多