0

我在想出一个 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 查询将正确字符串与字符串列表匹配,例如

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

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

谢谢。

4

4 回答 4

0

要连接字符串,请使用该contact方法

var correctString = string.Concat(strings)
于 2012-07-16T11:49:06.797 回答
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]));
        }
于 2012-07-25T18:24:35.077 回答
0

贝拉辛,

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

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

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

于 2012-07-16T12:12:46.183 回答
-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());
于 2012-07-16T11:48:44.700 回答