c#LINQ获取包含列表中所有元素的字符串

时间:2012-07-16 11:43:35

标签: c# linq

我无法想出一个LINQ来执行以下操作...假设我有一个字符串列表如下:

List<string> strings = new List<string>();
strings.add("one");
strings.add("two");
strings.add("three");

我希望能够获得如下所示的字符串:

string correctString = "onetwothree";

但在选择任何其他字符串时返回null,例如

string wrongString1 = "onethree"; // returns null
string wrongString2 = "one"; // returns null
string wrongString3 = "onetwo"; // returns null
string wrongString4 = "five"; // returns null

我认为LINQ是最好的方法,但不幸的是,选择和许多陈述没有太多运气......

有什么建议吗?

感谢。

[编辑] 好的混淆道歉...

我没有尝试连接字符串。我试图使用LINQ查询来匹配correctString和字符串列表,例如

aRandomStringList.FirstOrDefault<string>(st => st.contains(<all the values in the "strings" list>);

鉴于字符串List中的值可以更改...例如“一”和“三”可以交换位置。

感谢。

4 个答案:

答案 0 :(得分:0)

要加入字符串,请使用contact方法

var correctString = string.Concat(strings)

答案 1 :(得分:0)

BeraCim,

根据页面上的其他答案,这是我的转折:

var strings = new List<string> 
{
    "one", 
    "two", 
    "three"
};

// concatenate the list to single string
var correctString = string.Concat(strings);

string wrongString1 = "onethree"; // returns null
string wrongString2 = "one";      // returns null
string wrongString3 = "onetwo";   // returns null
string wrongString4 = "five";     // returns null
string correctStringTest = "onetwothree"; // returns "onetwothree"

// will return the value of correctString or null
var result = TestResult(correctString, wrongString1);

和'测试'方法:

public string TestResult(string sourceTest, string targetTest)
{
    return (sourceTest == targetTest) ? sourceTest : null;
}

应该做的伎俩。不是特别优雅,但基于这个问题可能会满足条件。

答案 2 :(得分:0)

很抱歉,如果我没有正确理解你的需要。我想你不需要Linq

        List<string> strings = new List<string>();

        private string TestString(string word)
        {
            return strings.IndexOf(word) >= 0 ? strings[strings.IndexOf(word)] : null;
        }
        private void Main()
        {
            strings.AddRange(new string[] { "one", "two", "three", "onetwothree" });
            string[] words = { "onethree", "one", "onetwo", "five", "onetwothree" };
            Console.WriteLine(TestString(words[0]));
            Console.WriteLine(TestString(words[1]));
            Console.WriteLine(TestString(words[2]));
            Console.WriteLine(TestString(words[3]));
            Console.WriteLine(TestString(words[4]));
        }

答案 3 :(得分:-1)

string [] sArr = new string [10];

        for (int i = initVal; i < initVal + 10; i++)
            sArr[i - initVal] = String.Format("{0,-3}", i * multVal);

        return String.Join(sep, sArr);

如上所述

  string correctString =   string.Join("",strings.ToArray());