我找到了一些类似的主题,但没有一个适合我的需求。我有一个字符串列表,如下所示:
List<List<string>> myList = {Foo, Foo, Bar, UniqueValue, Bar}
我想使用Linq创建一个List<List<string>>
,它为我提供了3个列表,每个列表都包含我上面列表中的唯一值。像这样:
List<List<string>> Entries =
{
List<List<string>> EntriesNamedFoo = {Foo, Foo, Foo}
List<List<string>> EntriesNamedBar = {Bar, Bar}
List<List<string>> EntriesNamedUniqueValue = {UniqueValue}
}
//Any given list would look like this:
UniqueValue = {AccountNumber, InvoiceDate, ProfessionalJargon, SomethingElseINeed}
//So I want to sort my lists by into groups that have the same value at list[0].
在我的代码中,我有一个带帐户的分隔文件。对于每个客户,我想生成一个报告,因此我想通过客户端ID对帐户进行分组。我单独生成了PDF,我想将共享相同客户端ID的文件合并到一个文件中。
我可以在没有LINQ的情况下做到这一点,但我真的很感兴趣如何用LINQ完成。
最后,我希望能够快速确定唯一项目的数量。
在Linq中,您可以计算这样的唯一值的数量:
items.Select(i => i.Value).Distinct().Count();
但我的问题是我的“物品”实际上是一个二维阵列。我有50行10列。我想查看每一行(在第一个元素处)并计算该位置的唯一值的数量。
你们的任何提示都会很棒,谢谢!
答案 0 :(得分:3)
如果我理解你的问题:
mysql_upgrade_info
它给你这个结果:
- - - - - - - - Foo 2 - - - - - - - - Bar 2 - - - - - - - - UniqueValue 1
答案 1 :(得分:1)
你需要像这样使用GroupBy method:
var grouped = original.GroupBy(s => s)
.Select(grp => grp.ToList())
.ToList();
请注意所有ToList
来电,只是为了确保您按照要求随处List<string>
,否则您将拥有IEnumerable<string>
,这取决于您想要做什么很好。
答案 2 :(得分:0)
var distinctClientd = myListOfLists.Where(l => l.Any())
.GroupBy(l => l.First())
.Select( g => g.ToList());
是吗?老实说,很难准确理解你在问什么。