Существует ли способ найти в Списке все объекты определенного типа с выражением Linq/Lambda?
Обновление: Из-за ответов я понимаю, что вопрос не был достаточно конкретен. Мне нужен новый Список только с объектами определенного типа. В моем случае класс не имеет никаких подклассов, таким образом, никакая потребность принять наследование во внимание.
Используйте OfType
так:
foreach (var bar in MyList.OfType<Foo>()) {
...
}
может быть, вы могли бы использовать ...
List<object> list = new List<object>();
list.Add("string");
list.Add(9);
var allOfOneType = list.Where(i => i.GetType().Equals(typeof(string)));
Вы можете использовать метод GetType () и сравнить с указанным типом.
Например, я выбираю все значения строкового типа из списка ниже:
var myList = new List<object>();
myList.Add(5);
myList.Add("My life");
var result = from obj in myList
where obj.GetType() == typeof(string)
select obj;
Примерно так (при использовании Linq для объектов - он не будет работать с Linq для объектов):
var specificListOfTypes = from item in list
where item.GetType() == typeof(int)
select item;