C#List <myclass>应该从MyClass </myclass>返回一个属性

时间:2011-10-31 13:49:07

标签: c# list attributes

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类型的List时,我想拥有,只有NAME属性..不是整个对象..我怎么能做到这一点? 类似的东西:

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

3 个答案:

答案 0 :(得分:7)

您可以使用Linq仅返回名称,但现在您将拥有List<string>

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

或者,您可以从原始列表中创建MyClass的新列表,并仅填充名称attibute:

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

答案 1 :(得分:0)

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

但是,如果要返回仅具有Name属性的对象,则可以使用接口。

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

然后让MyClass实现接口

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

然后您可以返回界面列表

return myClasses.Cast<IName>();

答案 2 :(得分:0)

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