System.Collections.Generic.List`1

товарищи знатоки! Заранее благодарю за ответ.

Программа должна создавать метод для фильтрации списка по заданным параметрам. В качестве параметров должны задаваться сам список, свойство для фильтрации(Name или Surname) и текстовое значение.

Вопросы:

  1. Изначально была ошибка CS0103(на Объект в вызове Filtr()), получилось избавиться от неё, теперь проект запускается, но в консоли выдаёт

System.Collections.Generic.List`1[arrayfiltr.Object]

Видел статью с таким же вопросом на англ стаке, но не понял, как это применить у себя в коде, а на ру не нашёл ничего, что помогло б.

  1. Обязательно ли задавать Name или Surname как параметр, нельзя задать просто текстовое значение, как прописано у меня в коде?
using System;
using System.Collections.Generic;
using System.Linq;

namespace arrayfiltr
{
    class Object
    {
        public string Name { get; set; }
        public string Surname { get; set; }

        public static List<Object> Objects = new List<Object>
        {
            new Object { Name="Ivan", Surname="Ivanov"},
            new Object { Name="Petr", Surname="Petrov"},
            new Object { Name="Vasiliy", Surname="Vasiliev"}
         };
     }

    class Program : Object
    {
        public static void Main(string[] args)
        {
            Filtr(Objects,"Ivan");
        }

        static void Filtr(List<Object> Objects, string Name)
        {
            List<Object> newObjects = new List<Object> { };

            var selectedObject = from Object in Objects
                                 where Object.Name == Name
                                 select Object;

            foreach (Object Object in selectedObject)
                newObjects.Add(Object);
            Console.WriteLine(newObjects);
        }
    }
}

Ответы (1 шт):

Автор решения: mik.ov
newObjects.ForEach(obj => Console.WriteLine("{0} {1}", obj.Name, obj.Surname))

Или же перегрузите метод ToString():

public override string ToString()
{
    return string.Format("{0} {1}", Name, Surname);
}

...

newObjects.ForEach(Console.WriteLine);

А еще лучше вот так:

public static void ForEach<T>(this IEnumerable<T> enumeration, Action<T> action)
{
    foreach(T item in enumeration)
    {
        action(item);
    }
}

...


var selectedObjects = from Object in Objects
                     where Object.Name == Name
                     select Object;

selectedObject.ForEach(Console.WriteLine);
→ Ссылка