2016-05-07 4 views
2

Я вычисляю среднюю длину идентификаторов с CQLinq в NDepend, и я хочу получить длину имен классов, полей и методов. Я прошел через эту страницу CQlinq: http://www.ndepend.com/docs/cqlinq-syntax, и у меня есть код, как:Как использовать CQLinq для получения показателей методов и полей в одном запросе

let id_m = Methods.Select(m => new { m.SimpleName, m.SimpleName.Length }) 
let id_f = Fields.Select(f => new { f.Name, f.Name.Length }) 
select id_m.Union(id_f) 

Это не работает, одна ошибка говорит:

'System.Collections.Generic.IEnumerable' не содержит определение для 'Союза' ...

другой является:

не может конвертировать из '' System.Collections.Generic.IEnumerable к '' System.Collections.Generic.HashSet

Однако, согласно MSDN, IEnumerable Интерфейс определяет Союза() и Concat() методов.

Мне кажется, что я не могу использовать CQLinq точно так же, как Linq. Во всяком случае, есть ли способ получить информацию от доменов Типы, Методы и Поля в рамках одного запроса?

Большое спасибо.

ответ

0

Есть ли способ получить информацию от доменов типов, методов и полей в рамках одного запроса?

Не сейчас, поскольку запрос CQLinq может соответствовать последовательности типов или последовательности методов или последовательности полей, поэтому вам нужны 3 различных кодовых запроса.

Для следующей версии CQLinq, будет гораздо лучше, и на самом деле вы будете иметь возможность писать такие вещи, как:

from codeElement in Application.TypesAndMembers 
select new { codeElement, codeElement.Name.Length } 

Следующая версия будет доступна до конца 2016 года