C#:用LINQ替换循环

juF*_*uFo 0 c# linq loops

LINQ(C#)中这些代码示例的等价物是什么:

    int[] items = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

int number = -1;
foreach (int i in items) 
{
    if (i == 5) 
    {
        number = i;
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

那么如何在LINQ中用两个(或更多)条件替换for循环? (它类似于上面的代码,无法提出一个更好的例子.想象一下,在for循环中发生其他条件或检查)

    int[] items = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

int number = -1;

for (int i = 0; i < items.Length && number == -1; i++) 
{
    if (items[i] == 5)
        number = items[i];
}
Run Code Online (Sandbox Code Playgroud)

第三段代码,如何在LINQ中翻译:

    List<int> items2 = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

int i = items2.Count - 1;

for (; i > 0; i--)
    items2.RemoveAt(i);
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Jon*_*eet 9

前两个很奇怪,但基本上它们是有效的:

int number = items.Contains(5) ? 5 : -1;
Run Code Online (Sandbox Code Playgroud)

要么

int number = items.Any(x => x == 5) ? 5 : -1;
Run Code Online (Sandbox Code Playgroud)

另一种方法:

int number = items.Where(x => x == 5).DefaultIfEmpty(-1).First();
Run Code Online (Sandbox Code Playgroud)

如果你能提出更实际的操作,我们可以提出更合理的LINQ查询:)

第三个片段无法真正转换为LINQ,因为它不是一个查询 - 它正在改变列表.