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;
}
}
如何在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];
}
第三段代码,如何在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);
提前致谢。
答案 0 :(得分:9)
前两个很奇怪,但基本上它们是有效的:
int number = items.Contains(5) ? 5 : -1;
或
int number = items.Any(x => x == 5) ? 5 : -1;
另一种方法:
int number = items.Where(x => x == 5).DefaultIfEmpty(-1).First();
如果你能提出更实际的操作,我们可以提出更合理的LINQ查询:)
第三个片段无法真正转换为LINQ,因为它不是查询 - 它突变列表。
答案 1 :(得分:2)
Jon指出,最后一个不能翻译成LINQ。但是,它可以简化为:
var survivers = 1;
items2.RemoveRange(survivers , items2.Count - survivers);