C#列表<;MyClass>;应该从MyClass返回一个Attribute

本文关键字:MyClass 返回 Attribute 一个 lt 列表 gt | 更新日期: 2023-09-27 18:12:56

MyClass.cs

 public class MyClass
 {
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        private string path;
        public string Path
        {
            get { return path; }
            set { path= value; }
        }
 }

当我返回类型MyClass的列表时,我希望只有NAME属性。。不是整个对象。。我怎样才能做到这一点?类似于:

List<MyClass> myClasses = new List<MyClass>();
return myClasses["Name"];  //<--- Only the Name

C#列表<;MyClass>;应该从MyClass返回一个Attribute

您可以使用Linq只返回名称,但现在您将有一个List<string>:

return myClasses.Select(x => x.Name).ToList();

或者,你可以从原来的MyClass创建一个新的列表,只填充名称attibute:

return myClasses.Select(x => new MyClass {Name = x.Name}).ToList();

如果你只想要一个名称列表,那么其他人提到的.Select(x => x.Name)是最好的。

但是,如果您希望返回一个只具有Name属性的对象,则可以使用接口。

public interface IName
{ 
    string Name { get; set; }
}

然后让MyClass实现接口

public class MyClass: IName
{
    //...snip
}

然后你可以返回界面的列表

return myClasses.Cast<IName>();
public class myList : List<MyClass>
{
    public MyClass this[string SearchedName]
    {
        get
        {
            return this.SingleOrDefault(mc => mc.Name == SearchedName);
        }
    }
}