好的,这就是我现在遇到的问题:我希望将相同数组的元素相互统一。
例如:我有一个包含这些元素的数组“A”,“B”,“C”,“D”
我希望将它们统一起来(可能然后将它们放在另一个列表中),这样它就会变成:
A,B
A,C
A,d
B,C
B,d
C,d
到目前为止,我尝试过一个简单的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();
}
}
感谢。
答案 0 :(得分: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();
答案 1 :(得分: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]);
}
答案 2 :(得分:0)
这可能是一个很好的开始,可以找出&#34;正确的数量&#34; ..
http://en.wikipedia.org/wiki/Combination 无论如何... 你可以做类似的事情(PseudoCode):
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的独特