0

好的,这是我目前遇到的问题:我想将相同数组的元素相互统一。

例如:我有一个包含这些元素“A”、“B”、“C”、“D”的数组

我想把它们统一起来(可能然后把它们放在另一个列表中),所以它会变成:

甲,乙

A,C

广告

公元前

乙,丁

光盘

到目前为止,我已经尝试了一个简单的 for 循环,但没有成功,也想不出如何进一步解决这个问题。

到目前为止,这是我没有成功的尝试:

List<string> testList = new List<string>();
List<string> anotherList = new List<string>();

testList.AddRange(richTextBox1.Text.Split(','));
anotherList.ToArray();

for (int i = 0; i < testList.Count; i++) //no idea how to get the right count
{
    var union = testList[i].Union(testList[i+1]);

    foreach (char value in union)
    {
        richTextBox2.Text = value.ToString();
    }
}

谢谢。

4

3 回答 3

3

也许这个简单的查询有帮助:

var query = from s1 in testList
        from s2 in testList.Skip(1)
        where string.Compare(s1 , s2) < 0
        select string.Format("{0},{1}", s1, s2);
testList = query.ToList();
于 2013-10-15T12:53:18.357 回答
0

这对我来说很好,可以匹配您想要的输出

static List<string> list = new List<string> { "A", "B", "C", "D", "E" }; 
static List<string> finished = new List<string>(); 

public static void Main()
{
    for (int i = 0; i < list.Count - 1; i++)
        for (int j = i+1; j < list.Count; j++)
            finished.Add(list[i]+","+list[j]);
}
于 2013-10-15T12:50:05.643 回答
0

这可能是找出“正确计数”的良好开端。

http://en.wikipedia.org/wiki/Combination 无论如何......你可以做这样的事情(伪代码):

List<string> unions = new List<string>();
foreach(string s1 in list1)
{
    foreach(string s2 in list2)
    {
        string union = s1+s2;
        if(!unions.Contains(union))
            unions.Add(union);
    }
}

foreach(string union in unions)
    Console.WriteLine(union);

您还可以使用 LINQ 的 Distinct 使用其他方法

LINQ:不同的值

于 2013-10-15T13:03:45.553 回答