繁体   English   中英

C#清单 <MyClass> 应该从MyClass返回一个属性

[英]C# List<MyClass> should return a Attribute from the MyClass

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

您可以使用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);
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM