Я знаю, что это старый вопрос, но LINQ: (.NET40 +)
var files = Directory.GetFiles("path_to_files").Where(file => Regex.IsMatch(file, @"^.+\.(wav|mp3|txt)$"));
Вы можете попытаться использовать представление vDimWorkItemTreeOverlay в качестве источника данных. Это пример запроса с одним уровнем иерархии:
SELECT Parent.[WorkItem]
,Parent.[System_Id]
,Parent.[System_Title]
,Parent.[System_State]
,Parent.[System_WorkItemType]
,Parent.[Microsoft_VSTS_Scheduling_TargetDate]
,Child.[WorkItem]
,Child.[System_Id]
,Child.[System_Title]
,Child.[System_State]
,Child.[System_Reason]
,Child.[System_WorkItemType]
,Child.[Microsoft_VSTS_Scheduling_StartDate]
,Child.[Microsoft_VSTS_Scheduling_FinishDate]
FROM [Tfs_Warehouse].[dbo].[vDimWorkItemTreeOverlay] Parent
LEFT JOIN [Tfs_Warehouse].[dbo].[vDimWorkItemTreeOverlay] Child ON Child.ParentWorkItemTreeSK = Parent.WorkItemTreeSK
WHERE Parent.AreaTeamProject = 'DEV' AND Parent.System_IsDeleted = 0 AND Parent.System_WorkItemType in ('Bug', 'Product Backlog Item', 'Requirement') AND Child.System_WorkItemType = 'Task'
AND Parent.WorkItemTreeSK = Parent.ParentWorkItemTreeSK AND Child.System_IsDeleted = 0