gpt4 book ai didi

c# - 在 LINQ 中只选择第一个对象?

转载 作者:太空狗 更新时间:2023-10-29 22:10:59 24 4
gpt4 key购买 nike

基本上我想为 LINQ 调整此代码:

private Tile CheckCollision(Tile[] tiles)
{
foreach (var tile in tiles)
{
if (tile.Rectangle.IntersectsWith(Rectangle))
{
return tile;
}
}

return null;
}

代码检查每个图 block 并返回与对象发生碰撞的第一个图 block 。我只想要第一个 磁贴,而不是像我使用这个时会得到的磁贴阵列:

private Tile CheckCollision(Tile[] tiles)
{
var rtn =
from tile in tiles
where tile.Rectangle.IntersectsWith(Rectangle)
select tile;

}

我该怎么办?

最佳答案

您可以使用 .First().FirstOrDefault() 扩展方法来检索与特定条件匹配的第一个元素:

private Tile CheckCollision(Tile[] tiles)
{
return tiles.FirstOrDefault(t => t.Rectangle.IntersectsWith(Rectangle));
}

如果在数组中找不到符合要求条件的元素,.First() 扩展方法将抛出异常。另一方面,.FirstOrDefault() 将静默返回 null。因此,请使用更适合您需求的那个。

请注意,您还可以使用 .Single() 扩展方法。与 .First() 的区别在于,如果多个元素匹配条件,.Single() 将抛出异常,而 .First() 将返回第一个。

关于c# - 在 LINQ 中只选择第一个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11817882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com