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

C# c LINQ获取包含列表中所有元素的字符串,c#,linq,C#,Linq,我很难想出一个LINQ来执行以下操作。。。假设我有以下字符串列表: List<string> strings = new List<string>(); strings.add("one"); strings.add("two"); strings.add("three"); 但在选择任何其他字符串时返回null,例如 string wrongString1 = "onethree"; // returns null string wrongString2 = "one

我很难想出一个LINQ来执行以下操作。。。假设我有以下字符串列表:

List<string> strings = new List<string>();
strings.add("one");
strings.add("two");
strings.add("three");
但在选择任何其他字符串时返回null,例如

string wrongString1 = "onethree"; // returns null
string wrongString2 = "one"; // returns null
string wrongString3 = "onetwo"; // returns null
string wrongString4 = "five"; // returns null
我认为LINQ是最好的方法,但不幸的是,在select和许多语句中没有太多的运气

有什么建议吗

谢谢

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);
[编辑] 好的,我为这一混乱道歉

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

aRandomStringList.FirstOrDefault<string>(st => st.contains(<all the values in the "strings" list>);
鉴于字符串列表中的值可以更改。。。e、 一和三可以互换位置

谢谢。

要连接字符串,请使用联系人方法

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);
贝拉西姆

根据页面上的其他答案,我的想法是:

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);

这应该能奏效。不是特别优雅,但基于问题可能满足条件。

如果我没有正确理解你需要什么,很抱歉。我想你不需要林克

        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]));
        }

“选择任何其他字符串”是什么意思?用户可以选择什么吗?其他例子会有什么问题?beracim-出于兴趣,您描述的场景的用例是什么。也许这是你提问的更好起点。就目前情况而言,你只会得到大量重复的答案,显示如何将列表连接成单个字符串。请参阅我添加的“几乎”重复答案below@jim托兰:我已经更新了我的问题。基本上,我想从包含自定义字符串列表中所有字符串的字符串列表中获取一个字符串。
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;
}
        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]));
        }