Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从使用委托搜索其他属性找到的对象返回属性?_C#_.net_Delegates - Fatal编程技术网

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;