C#列表应从MyClass的

问题描述:

MyClass.csC#列表<MyClass>应从MyClass的

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 
+0

的名单? –

+0

是的,这就是我想要的 – eMi

+0

你想以某种方式返回一个字符串序列(每个代表一个名字)或一个MyClasses'序列与'路径''擦除'? – Ani

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

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

另外,您可以从您的原始创建的MyClass一个新的列表,只填充名称attibute:

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

+1,太快! :) –

+0

thx,多数民众赞成在:D – eMi

+1

@ssg - 你必须如果你想击败斯基特先生! –

如果你只是想名称的列表,然后通过超视距提到.Select(x => x.Name) ers是最好的。

如果您要返回仅具有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); 
     } 
    } 
} 
要返回名称列表