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

文字列リストの値が変更される可能性があるという事実を考えると、たとえば、「1」と「3」は場所を入れ替えることができます。

ありがとう。

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 に答える