C#选择具有长度条件的多个元素

时间:2014-07-29 09:08:03

标签: c# linq list select conditional-statements

我有一个包含字符串的列表,我想要一些提示/帮助如何选择多个元素,以便所选元素的总长度为例如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)); 

感谢您的反馈。

1 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

int currentLength=0;
var items = list.TakeWhile(x => (currentLength += x.Length ) <= 13);