我用foreach循环编写了一些代码,但是看起来很丑陋,我想将其转换为LINQ版本,但是我不知道该怎么做 (对不起,我是LINQ的新手),有人可以告诉我下面给出的LINQ代码的方式吗?
GameObject[] everything = Resources.FindObjectsOfTypeAll(
typeof(GameObject)) as GameObject[];
GameObject layoutContainer = new GameObject();
foreach (GameObject obj in everything) {
if(obj.name == "LayoutContainer") {
layoutContainer = obj;
break;
}
}
答案 0 :(得分:2)
您可以使用以下代码将其转换为LINQ:
GameObject layoutContainer = everything.FirstOrDefault(obj => obj.name == "LayoutContainer") ?? new GameObject();
这将捕获带有“ name
”的“ LayoutContainer”的第一个对象。如果没有名称相同的对象,它将为其分配一个新对象。这与您的代码示例中显示的功能相同。
答案 1 :(得分:2)
GameObject layoutContainer = (from game in everything
where game.name == "LayoutContainer"
select game).FirstOrDefault();
答案 2 :(得分:1)
尝试一下:
GameObject layoutContainer = (Resources.FindObjectsOfTypeAll(typeof(GameObject)) as GameObject[])?
.FirstOrDefault(x => x.name == "LayoutContainer") ?? new GameObject();