C # List <MyClass>должен возвращать атрибут из MyClass - PullRequest
1 голос
/ 31 октября 2011

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

Ответы [ 3 ]

7 голосов
/ 31 октября 2011

Вы можете использовать Linq только для возврата имени, но теперь у вас будет List<string>:

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

В качестве альтернативы вы можете создать новый список MyClass из своего оригинала и заполнить только имяАттибут:

return myClasses.Select(x => new MyClass {Name = x.Name}).ToList();
0 голосов
/ 31 октября 2011
public class myList : List<MyClass>
{
    public MyClass this[string SearchedName]
    {
        get
        {
            return this.SingleOrDefault(mc => mc.Name == SearchedName);
        }
    }
}
0 голосов
/ 31 октября 2011

Если вы просто хотите получить список имен, то .Select(x => x.Name), упомянутый другими, является лучшим.

Если вы хотите вернуть объект, который имеет только свойство Name, вы можете использовать интерфейс.

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

Затем заставьте MyClass реализовать интерфейс

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

Затем вы можете вернуть список интерфейса

return myClasses.Cast<IName>();
...