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