所以,在这个精彩且可能无法理解的标题之后,这是我的问题。 我有这个Button对象:
class Button
{
public Texture2D Texture {get;set;}
public string Name {get;set;}
...
}
我正在查看List<Button> buttons
中所有按钮的列表。在代码中的某个时刻,我需要从Button返回Texture属性。我不能确定它的价值,所以我无法从它的纹理值中搜索按钮。我需要搜索它的名字。我目前正在使用代表:
SomeMethod(buttons.Find(delegate (Button btn)
{
return btn.Name = "Title";
}));
但是,我不能以这种方式返回Texture属性,除非我创建一个临时的Button对象。
那么,如何通过名称搜索它来返回Texture属性?
答案 0 :(得分:4)
您可以使用LINQ:
Texture2D theTexture = buttons
.Where(b => b.Name = "Title")
.Select(b => b.Texture)
.First();
如果要处理“不匹配”,可以使用.FirstOrDefault()
,如果没有匹配的名称,将导致它返回null。
答案 1 :(得分:1)
易:
Texture2D t = buttons.Where(x => x.Name == givenName).Select(x => x.Texture).FirstOrDefault();
答案 2 :(得分:0)
如果你能确保你总是拥有你正在寻找的那个,你甚至可以用更少的东西来做.......
var tex = buttons.First(x => x.Name == givenName).First().Texture;