Почему без каста не работает?
Почему без каста не работает?
Простой код:
XmlSchema xsdSchema = ...;
var items = xsdSchema.Items.Cast<XmlSchemaObject>() // didn't work without this cast
.Where(item => item.GetType() == typeof(XmlSchemaAnnotation));
;
Items - коллекция XmlSchemaObject - вроде должно работать без дополнительного каста.
П.С. Обычного Селекта - тоже нет... просто нет. Вроде все либы референснуты...
Возможно потому, что XmlSchemaObjectCollection наследуется от IEnumerable
а не от IEnumerable<XmlSchemaObject>
Цикл перебора элементов по XmlSchemaObject вполне работает.
Хотя - возможно.
Но, блин, приходится вот такое изобретать:
XmlSchemaComplexType item = xsdSchema.Items.Cast<XmlSchemaObject>().Where(x => x.GetType() == typeof(XmlSchemaComplexType)).Cast<XmlSchemaComplexType>().FirstOrDefault();
слишком много в одной строке. Можно и по другому записать
IEnumerable<XmlSchemaObject> items = from item in xsdSchema.Items.Cast<XmlSchemaObject>() where item.GetType() == typeof(XmlSchemaAnnotation) select item; XmlSchemaObject schemaObject = items.FirstOrDefault();
В одной строке - да, многовато... сразу даже не прочитаешь с непривычки.
Мне "по-операционно" удобнее - лучше понимаю что вычисляется.
К тому же - результирующий тип у меня немного другой...