首页 > 解决方案 > 如果字符串数组的元素相等,如何拆分它们?

问题描述

再会,

我目前有一个这样的字符串数组:

string[] array = {"aa","bb","cc","dd","aa","cc","ee","ff","aa","bb"}

我希望能够从同一个字符串 [] 中获得相同的位置,例如:

string[] a = {"aa","aa","aa"}
string[] b = {"bb","bb"}
string[] c = {"cc","cc"}
string[] d = {"dd"}
string[] e = {"ee"}
string[] f = {"ff"}

需要注意的是,父矩阵的元素总是变化的,并不总是相同的。

我尝试使用 linq,但我没有得到我想要的东西。

这是我对 linq 的尝试:

array.Where(x => array.Contains(x)).ToArray();

谢谢你帮助我!

标签: c#arrayslinq

解决方案


尽管看到了您要求的内容,但您想要的结果非常有限,以后无法使用。您应该利用GroupByin linq 的优势,然后在需要时在该集合中找到它。

// your array
string[] array = {"aa","bb","cc","dd","aa","cc","ee","ff","aa","bb"};

// group by value
var groupedValues = array.GroupBy(x => x).ToList();

// get the "aa" group if exist
var aa = groupedValues.FirstOrDefault(x => x.Key == "aa");

// check if the group was found
if(aa != null)
{
    // get all "aa" values in that group. This return this collection based on your inpit{ "aa", "aa", "aa" } 
    var allaaValues = aa.ToList();
}

推荐阅读