【求助】ling实现问题

xupeihuagudulei 2012-06-14 10:09:35
http://blog.csdn.net/q107770540/article/details/5802699
猫,这个博客里
//这么一个LIST, 最终想得到的结果如下:
List<TestData> list = new List<TestData>();
list.Add(new TestData() { Name="A", Count=3,BatNum="001"});
list.Add(new TestData() { Name = "A", Count = 3,BatNum="001" });
list.Add(new TestData() { Name = "A", Count = 3, BatNum = "002" });
list.Add(new TestData() { Name = "b", Count = 3, BatNum = "001" });
list.Add(new TestData() { Name = "b", Count = 6, BatNum = "002" });
list.Add(new TestData() { Name = "b", Count = 3, BatNum = "003" });
list.Add(new TestData() { Name = "b", Count = 5, BatNum = "001" });
最后结果:
Name="A", Count=6,BatNum="001"
Name="A", Count=3,BatNum="002"
Name="b", Count=8,BatNum="001"
Name="b", Count=6,BatNum="002"
Name="b", Count=3,BatNum="003"

我想让最后结果变成这样
最后结果:
Name="A", Count=6,BatNum="001"
Name=",,", Count=3,BatNum="002"
Name="b", Count=8,BatNum="001"
Name=",,", Count=6,BatNum="002"
Name=",,", Count=3,BatNum="003"

下一行有相同的就用两个",,"分隔。
...全文
115 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangwenquan123 2012-06-14
  • 打赏
  • 举报
回复
            List<TestData> list = new List<TestData>();
list.Add(new TestData() { Name = "A", Count = 3, BatNum = "001" });
list.Add(new TestData() { Name = "A", Count = 3, BatNum = "001" });
list.Add(new TestData() { Name = "A", Count = 3, BatNum = "002" });
list.Add(new TestData() { Name = "b", Count = 3, BatNum = "001" });
list.Add(new TestData() { Name = "b", Count = 6, BatNum = "002" });
list.Add(new TestData() { Name = "b", Count = 3, BatNum = "003" });
list.Add(new TestData() { Name = "b", Count = 5, BatNum = "001" });
List<TestData> newlist = new List<TestData>();
var query = list.OrderBy(x => x.Name)
.GroupBy(x => new { x.Name, x.BatNum })
.Select(x => new TestData() { Name = x.Key.Name, Count = x.Sum(y => y.Count), BatNum = x.Key.BatNum })
.Aggregate((x, y) =>
{
if (newlist.Count == 0)
newlist.Add(x);
if (x.Name == y.Name)
newlist.Add(new TestData() { Name = ",,", Count = y.Count, BatNum = y.BatNum });
else
newlist.Add(y);
return y;
});
foreach (TestData t in newlist)
Console.WriteLine("Name={0} Count={1} BatNum=\"{2}\"", t.Name, t.Count, t.BatNum);
/*
Name=A Count=6 BatNum="001"
Name=,, Count=3 BatNum="002"
Name=b Count=8 BatNum="001"
Name=,, Count=6 BatNum="002"
Name=,, Count=3 BatNum="003"
*/

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧