Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Filtering a WIQL Query with C#

I need some help filtering a SQL WIQL query. How can I modify the code below to ignore the fields that have empty model values? For example if the user only wants to filter one field like the work item type and ignore the state field? Any help would be appreciated.

 public async Task<ActionResult> Method(filterModel model)
   {
        VssConnection connection = new VssConnection(new 

        Uri(vstsCollectionUrl), new VssClientCredentials());

        WorkItemTrackingHttpClient witClient = connection.GetClient<WorkItemTrackingHttpClient>();
        Wiql query = new Wiql() { Query = "SELECT [Id], [Title] FROM workitems WHERE [Work Item Type] = '" + model.workitem + "' && 
        [State] = '"+ model.state + "'"};
        WorkItemQueryResult queryResults = witClient.QueryByWiqlAsync(query).Result;

        if (queryResults == null || queryResults.WorkItems.Count() == 0)
        {
            Console.WriteLine("Query did not find any results");          
        }
    }
like image 927
Jeremiah Mora Avatar asked Sep 02 '25 08:09

Jeremiah Mora


1 Answers

Just remove this code && [State] = '"+ model.state + "':

public async Task<ActionResult> Method(filterModel model)
{
    VssConnection connection = new VssConnection(new 

    Uri(vstsCollectionUrl), new VssClientCredentials());

    WorkItemTrackingHttpClient witClient = connection.GetClient<WorkItemTrackingHttpClient>();
    Wiql query = new Wiql() { Query = "SELECT [Id], [Title] FROM workitems WHERE [Work Item Type] = '" + model.state + "'" };
    WorkItemQueryResult queryResults = witClient.QueryByWiqlAsync(query).Result;

    if (queryResults == null || queryResults.WorkItems.Count() == 0)
    {
        Console.WriteLine("Query did not find any results");          
    }
}

Better and clear way:

Wiql query = new Wiql() { Query = $"SELECT [Id], [Title] FROM workitems WHERE [Work Item Type] = {model.state}"};
like image 146
Shayki Abramczyk Avatar answered Sep 05 '25 00:09

Shayki Abramczyk