通过名称c#从Tupled列表中分组或提取元素

时间:2013-11-17 15:22:05

标签: c# linq list

我正在编写一个litle c#app,它从一个源中提取信息并将其打印到txt文件。但是在订购信息时我遇到了一些问题。 我有一个像这样的tupled列表:

List<Tuple<string,string,string>>

在这个列表中,我有这样的元素:

(SomeName1, SomeID1, Description1)
(SomeName2, SomeID2, Description1)
(SomeName3, SomeID3, Description1)
(SomeName4, SomeID4, Description1)
(SomeName5, SomeID5, Description1)
(SomeName6, SomeID6, Description2)
(SomeName7, SomeID7, Description2)
(SomeName8, SomeID8, Description2)
(SomeName9, SomeID9, Description2)

等。 因此,我们可以看到名称和ID始终是唯一的。虽然几个元素的描述相同。我想要的是对列表进行分组,或者根据列表的描述将列表中的元素提取到其他几个列表中。所以我例如从上面的列表中得到两个listst。列表1将包含以下内容:

(SomeName1, SomeID1, Description1)
(SomeName2, SomeID2, Description1)
(SomeName3, SomeID3, Description1)
(SomeName4, SomeID4, Description1)
(SomeName5, SomeID5, Description1)

虽然列表2将包含此内容:

(SomeName6, SomeID6, Description2)
(SomeName7, SomeID7, Description2)
(SomeName8, SomeID8, Description2)
(SomeName9, SomeID9, Description2)

有关如何获得此消息的任何消息?假设我不知道描述是什么,也不知道它们有多少不同的描述。最佳解决方案是,如果我可以让list1首先在索引0处显示描述,然后在以下索引处显示name,id和description。但我可以设法找到我自己的想法。我无法工作的是根据描述对大列表进行分组/拆分 我会认可我能得到的所有帮助。提前致谢!

1 个答案:

答案 0 :(得分:0)

var result = input.GroupBy(t=>t.Item3, (key,items)=>items.ToList()).ToList();
// 
//list1 = result[0];
//list2 = result[1]; ...