我有一个包含字符串的列表,我想要一些提示/帮助如何选择多个元素,以便所选元素的总长度为例如13个长度。
我有一个想法,使用linq可能是一个很好的解决方案,但我还没有真正进入linq。
提前致谢:)
以下是我在发布之前尝试过的一些代码。但由于该文件包含+2500行,因此需要很长时间。
List<string> textList = new List<string>(File.ReadAllLines(@"D:\text"));
List<string> newTextList = new List<string>();
foreach (string x in textList)
{
foreach (string y in textList)
{
if ((x + y).Length == 13)
{
newTextList.Add(x + " " + y);
}
}
}
以下是代码的重写:
List<string> textList = new List<string>(File.ReadAllLines(@"D:\text"));
List<string> newTextList = new List<string>();
for (int i = 1; i <= 12; i++)
{
List<string> list1 = new List<string>(textList.Where(x => x.Length == i));
List<string> list2 = new List<string>(textList.Where(x => x.Length == 13-i));
foreach (string x in list1)
{
foreach (string y in list2)
{
newTextList.Add(x + " " + y);
}
}
}
有没有办法在下面做这样的事情?
List<string> list1 = new List<string>(textList.Where(x,y => x.Length + y.Lenght == 13));
感谢您的反馈。
答案 0 :(得分:1)
您可以尝试这样的事情:
int currentLength=0;
var items = list.TakeWhile(x => (currentLength += x.Length ) <= 13);