Я доступа модель Interop, которая имеет следующую структуруLinq запрос для Где условие о взимании имущества Вариант объекта
Проекты представляет собой сборник, содержащий несколько Project объекты
Проект объект имеет государственную собственность и Недвижимость
Свойства коллекция содержит Variant/Объект/Свойство объекты
собственности всегда имеет Имя свойство
Я хочу использовать Linq для:
Найти все проектыНайти первый объект Property (1 или более проектов могут иметь Pro perty.Name == "ИнициаторName". Я просто хочу, чтобы первый объект свойства имел свойство.Name == «IntiatorName». То есть мне все равно, к какому проекту принадлежит объект свойств.Где Project.State = state_initiated
и Project.Properties, которые имеют Project.Name = "InitiatorName"
Вот Linq, что я пытаюсь (что C# не нравится) ... Я думаю, что у меня есть первая пара строк правильно, но я не уверен, как иметь дело с вариантами объектов Property.
Есть ли что-то, что я могу сделать в Linq, или мне нужно перечислить все объекты недвижимости?
var result = dept.Projects
.Cast<Project>()
.Where(project => project.State == pState.state_initiated)
.SelectMany(project => project.Properties())
.Where(property => property.Name == "InitiatorName");
Это Interop подпись Свойства интерфейса:
public interface _Properties : IEnumerable
{
[DispId(1)]
Application Application { get; }
[DispId(40)]
int Count { get; }
[DispId(2)]
object Parent { get; }
[DispId(-4)]
[TypeLibFunc(1)]
IEnumerator GetEnumerator();
[DispId(0)]
Property Item(object index);
}
И подпись недвижимости выглядит следующим образом:
public interface Property
{
[DispId(41)]
Properties Collection { get; }
[DispId(40)]
string Name { get; }
[DispId(1)]
Properties Parent { get; }
[DispId(0)]
object Value { get; set; }
}
Можете ли вы показать свои проекты/проекты/классы свойств в качестве кода? –
Вы можете написать сообщение об ошибке Linq product? –
Вы не показывали класс Project. Как выглядит Project.Properties? –