C# 从使用委托搜索其他属性找到的对象返回属性?
所以,在这个精彩的,也许不可能理解的标题之后,我的问题来了。 我有一个按钮对象:C# 从使用委托搜索其他属性找到的对象返回属性?,c#,.net,delegates,C#,.net,Delegates,所以,在这个精彩的,也许不可能理解的标题之后,我的问题来了。 我有一个按钮对象: class Button { public Texture2D Texture {get;set;} public string Name {get;set;} ... } 我拿着一个列表按钮中所有按钮的列表。在代码中的某个时刻,我需要从按钮返回纹理属性。我不能确定它的值,所以我不能从它的纹理值中搜索按钮。我需要搜索它的名字。我目前正在使用一个代理: SomeMethod(buttons.
class Button
{
public Texture2D Texture {get;set;}
public string Name {get;set;}
...
}
我拿着一个列表按钮
中所有按钮的列表。在代码中的某个时刻,我需要从按钮返回纹理属性。我不能确定它的值,所以我不能从它的纹理值中搜索按钮。我需要搜索它的名字。我目前正在使用一个代理:
SomeMethod(buttons.Find(delegate (Button btn)
{
return btn.Name = "Title";
}));
但是,除非创建临时按钮对象,否则无法以这种方式返回纹理属性
那么,如何通过按名称搜索纹理属性来返回纹理属性?您可以使用LINQ:
Texture2D theTexture = buttons
.Where(b => b.Name = "Title")
.Select(b => b.Texture)
.First();
如果要处理“无匹配项”,可以使用.FirstOrDefault()
,如果没有匹配的名称,则会导致返回null。简单:
Texture2D t = buttons.Where(x => x.Name == givenName).Select(x => x.Texture).FirstOrDefault();
如果你能确保你一直拥有你正在寻找的那个,你甚至可以用更少的
var tex = buttons.First(x => x.Name == givenName).First().Texture;