我无法想出一个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中的值可以更改...例如“一”和“三”可以交换位置。
感谢。
答案 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());