public static DataServiceQuery <TEntity> WhereIdIn <TEntity>(this DataServiceQuery <TEntity> service, IEnumerable <long> entityIds)
        {
            var idFilterList = entityIds.Select(id => $"(Id eq {id})");
            var idFilter     = string.Join(" or ", idFilterList);
            var query        = service.AddQueryOption("$filter", idFilter);

            return(query);
        }
Пример #2
0
        public static int TotalCount <TElement>(this DataServiceQuery <TElement> q)
        {
            var query    = q.AddQueryOption("rf.inlinecount", "allpages");
            var response = query.Execute() as QueryOperationResponse <TElement>;
            int count    = -1;

            int.TryParse(response.Headers.FirstOrDefault(h => h.Key == "Total-Inline-Count").Value, out count);
            return(count);
        }
Пример #3
0
        public static int IndexOf <TElement>(this DataServiceQuery <TElement> q, FilterParameterCollection keyCondition)
        {
            var query    = q.AddQueryOption("rf.indexof", HttpUtility.UrlEncode(keyCondition.JsonSerialize(), Encoding.GetEncoding(1251)));
            var response = query.Execute() as QueryOperationResponse <TElement>;
            int idx      = -1;

            int.TryParse(response.Headers.FirstOrDefault(h => h.Key == "Index-Of-Model").Value, out idx);
            return(idx);
        }
        public DataServiceQuery <T> AddContinutationToQuery <T>(DataServiceQuery <T> query)
        {
            if (!string.IsNullOrWhiteSpace(NextPartition) &&
                !string.IsNullOrWhiteSpace(NextRowKey))
            {
                return(query.AddQueryOption("NextPartitionKey", NextPartition).AddQueryOption("NextRowKey", NextRowKey));
            }

            return(query);
        }
Пример #5
0
        public IDataServiceQuery <T> CreateQuery <T>(string entitySetName, IDictionary <string, object> queryOptions)
        {
            DataServiceQuery <T> query = this._context.CreateQuery <T>(entitySetName);

            foreach (KeyValuePair <string, object> pair in queryOptions)
            {
                query = query.AddQueryOption(pair.Key, pair.Value);
            }
            return(new DataServiceQueryWrapper <T>(this, query));
        }
Пример #6
0
        public string GenerateQueryUri <T>(string entitySet, IDictionary <string, object> entityParams, IDictionary <string, object> filters) where T : class
        {
            UriOperationParameter[] myParams = null;

            DataServiceQuery <T> query = null;

            if (!this.isConnected)
            {
                return(null);
            }
            if (string.IsNullOrEmpty(entitySet))
            {
                return(null);
            }

            if (entityParams == null)
            {
                query = this.container.CreateQuery <T>(entitySet);
            }
            else
            {
                int count = entityParams.Count;
                if (count > 0)
                {
                    myParams = new UriOperationParameter[count];

                    int i = 0;
                    foreach (string paramKey in entityParams.Keys)
                    {
                        // check for null value here
                        myParams[i++] = new UriOperationParameter(paramKey, entityParams[paramKey]);
                    }

                    query = this.container.CreateFunctionQuery <T>("", entitySet, false, myParams);
                }
            }
            if (query == null)
            {
                return(null);
            }
            if (filters != null)
            {
                foreach (string filter in filters.Keys)
                {
                    object filterValue = filters[filter];
                    if (filterValue != null)
                    {
                        // Immutability here ?
                        query = query.AddQueryOption(filter, filterValue);
                    }
                }
            }

            return(query.ToString());
        }
        /// <summary>
        /// </summary>
        /// <param name="Query">Bing search query Sample Values : xbox</param>
        /// <param name="Options">Specifies options for this request for all Sources. Valid values are: DisableLocationDetection, EnableHighlighting. Sample Values : EnableHighlighting</param>
        /// <param name="Market">Market. Note: Not all Sources support all markets. Sample Values : en-US</param>
        /// <param name="Adult">Adult setting is used for filtering sexually explicit content Sample Values : Moderate</param>
        /// <param name="Latitude">Latitude Sample Values : 47.603450</param>
        /// <param name="Longitude">Longitude Sample Values : -122.329696</param>
        /// <param name="NewsLocationOverride">Overrides Bing location detection. This parameter is only applicable in en-US market. Sample Values : US.WA</param>
        /// <param name="NewsCategory">The category of news for which to provide results Sample Values : rt_Business</param>
        /// <param name="NewsSortBy">The sort order of results returned Sample Values : Date</param>
        public DataServiceQuery <NewsResult> News(String Query, String Options, String Market, String Adult,
                                                  Double?Latitude, Double?Longitude, String NewsLocationOverride,
                                                  String NewsCategory, String NewsSortBy)
        {
            if ((Query == null))
            {
                throw new ArgumentNullException("Query", "Query value cannot be null");
            }
            DataServiceQuery <NewsResult> query = base.CreateQuery <NewsResult>("News");

            query = query.AddQueryOption("Query", string.Concat("\'", Uri.EscapeDataString(Query), "\'"));
            if ((Options != null))
            {
                query = query.AddQueryOption("Options", string.Concat("\'", Uri.EscapeDataString(Options), "\'"));
            }
            if ((Market != null))
            {
                query = query.AddQueryOption("Market", string.Concat("\'", Uri.EscapeDataString(Market), "\'"));
            }
            if ((Adult != null))
            {
                query = query.AddQueryOption("Adult", string.Concat("\'", Uri.EscapeDataString(Adult), "\'"));
            }
            if (((Latitude != null)))
            {
                query = query.AddQueryOption("Latitude", Latitude.Value);
            }
            if (((Longitude != null)))
            {
                query = query.AddQueryOption("Longitude", Longitude.Value);
            }
            if ((NewsLocationOverride != null))
            {
                query = query.AddQueryOption("NewsLocationOverride",
                                             string.Concat("\'", Uri.EscapeDataString(NewsLocationOverride), "\'"));
            }
            if ((NewsCategory != null))
            {
                query = query.AddQueryOption("NewsCategory", string.Concat("\'", Uri.EscapeDataString(NewsCategory), "\'"));
            }
            if ((NewsSortBy != null))
            {
                query = query.AddQueryOption("NewsSortBy", string.Concat("\'", Uri.EscapeDataString(NewsSortBy), "\'"));
            }
            return(query);
        }
Пример #8
0
        // This is dependent on the Proxy class
        //
        // Apparently, 'T' and 'entityName' param can be of different names (e.g. Pais and Paises)
        public ObservableCollection <T> GetEntities <T>(string entityName, IDictionary <string, object> filters) where T : class
        {
            IEnumerable <T> result = null;

            if (string.IsNullOrEmpty(entityName))
            {
                return(null);
            }

            if (!this.isConnected)
            {
                return(null);
            }
            try
            {
                //  Paises.OrderBy(x => x.nombre).ToList();
                //var list = this.container.CreateQuery<T>(entityName).ToList();
                DataServiceQuery <T> query = this.container.CreateQuery <T>(entityName);

                // Country?$filter=Name eq 'USA'

                if (filters == null)
                {
                    result = query.Execute();
                }
                else
                {
                    // Test this ...
                    foreach (string filter in filters.Keys)
                    {
                        object filterValue = filters[filter];
                        if (filterValue != null)
                        {
                            // Immutability here ?
                            query = query.AddQueryOption(filter, filterValue);
                        }
                    }

                    result = query.Execute();
                }

                // Synchronous operation ???
                var list = result.ToList();

                return(new ObservableCollection <T>(list));
            }
            catch (Exception ex)  // will this work for all types of errors?
            {
                this.errors.Add(ex);
            }

            return(null);
        }
        /// <summary>
        /// </summary>
        /// <param name="Query">Bing search query Sample Values : xblox</param>
        /// <param name="Options">Specifies options for this request for all Sources. Valid values are: DisableLocationDetection, EnableHighlighting. Sample Values : EnableHighlighting</param>
        /// <param name="Market">Market. Note: Not all Sources support all markets. Sample Values : en-US</param>
        /// <param name="Adult">Adult setting is used for filtering sexually explicit content Sample Values : Moderate</param>
        /// <param name="Latitude">Latitude Sample Values : 47.603450</param>
        /// <param name="Longitude">Longitude Sample Values : -122.329696</param>
        public DataServiceQuery <SpellResult> SpellingSuggestions(String Query, String Options, String Market, String Adult,
                                                                  Double?Latitude, Double?Longitude)
        {
            if ((Query == null))
            {
                throw new ArgumentNullException("Query", "Query value cannot be null");
            }
            DataServiceQuery <SpellResult> query = base.CreateQuery <SpellResult>("SpellingSuggestions");

            query = query.AddQueryOption("Query", string.Concat("\'", Uri.EscapeDataString(Query), "\'"));
            if ((Options != null))
            {
                query = query.AddQueryOption("Options", string.Concat("\'", Uri.EscapeDataString(Options), "\'"));
            }
            if ((Market != null))
            {
                query = query.AddQueryOption("Market", string.Concat("\'", Uri.EscapeDataString(Market), "\'"));
            }
            if ((Adult != null))
            {
                query = query.AddQueryOption("Adult", string.Concat("\'", Uri.EscapeDataString(Adult), "\'"));
            }
            if (((Latitude != null)))
            {
                query = query.AddQueryOption("Latitude", Latitude.Value);
            }
            if (((Longitude != null)))
            {
                query = query.AddQueryOption("Longitude", Longitude.Value);
            }
            return(query);
        }
Пример #10
0
        public List <Item> GetItems(string ModifiedDate)
        {
            string serviceODataURL = ConfigurationManager.AppSettings["NAVODATAUrl"];
            string WS_User         = ConfigurationManager.AppSettings["NAV_User"];
            string WS_Pwd          = ConfigurationManager.AppSettings["NAV_Pwd"];
            string WS_Domain       = ConfigurationManager.AppSettings["NAV_Domain"];
            string Company         = ConfigurationManager.AppSettings["Company"];

            string serviceUri = string.Format(serviceODataURL + "/Company('{0}')", Company);

            List <Item> itemListB2B = new List <Item>();

            try
            {
                DataServiceContext context = new DataServiceContext(new Uri(serviceUri));

                NAV_ODATA.NAV theNav = new NAV_ODATA.NAV(new Uri(serviceUri));
                theNav.Credentials = new System.Net.NetworkCredential(WS_User, WS_Pwd, WS_Domain);

                DataServiceQuery <NAV_ODATA.B2BArticoliWeb> q = theNav.CreateQuery <NAV_ODATA.B2BArticoliWeb>("B2BArticoliWeb");

                if (ModifiedDate.Length > 0)
                {
                    //OData Filter Expression ge = greater than or equal to
                    string FilterValue = string.Format("Last_Date_Modified ge datetime'{0}' or Last_Movement_Date ge datetime'{0}'", ModifiedDate);
                    q = q.AddQueryOption("$filter", FilterValue);
                }

                List <NAV_ODATA.B2BArticoliWeb> itemList = q.Execute().ToList();

                foreach (NAV_ODATA.B2BArticoliWeb item in itemList)
                {
                    Item a = new Item();
                    a.No               = item.No;
                    a.Description1     = item.Description;
                    a.Description2     = item.Description_2;
                    a.Inventory        = item.Inventory;
                    a.Lot              = item.Quantità_Lotto;
                    a.UnitOfMeasure    = item.Base_Unit_of_Measure;
                    a.ItemType         = item.Linea;
                    a.ItemBrand        = item.Dimension_Value_Code;
                    a.BrandDescription = item.Name;
                    itemListB2B.Add(a);
                }
            }
            catch (Exception ex)
            {
                string exmsg = ex.Message;
            }

            return(itemListB2B);
        }
Пример #11
0
        /// <summary>
        /// Applies the continuation to query.
        /// </summary>
        /// <param name="continuationToken">The continuation token.</param>
        /// <param name="localQuery">The local query.</param>
        /// <returns>The modified query.</returns>
        private static DataServiceQuery <TElement> ApplyContinuationToQuery(ResultContinuation continuationToken, DataServiceQuery <TElement> localQuery)
        {
            if (continuationToken != null)
            {
                if (continuationToken.NextPartitionKey != null)
                {
                    localQuery = localQuery.AddQueryOption(TableServiceNextPartitionKey, continuationToken.NextPartitionKey);
                }

                if (continuationToken.NextRowKey != null)
                {
                    localQuery = localQuery.AddQueryOption(TableServiceNextRowKey, continuationToken.NextRowKey);
                }

                if (continuationToken.NextTableName != null)
                {
                    localQuery = localQuery.AddQueryOption(TableServiceNextTableName, continuationToken.NextTableName);
                }
            }

            return(localQuery);
        }
Пример #12
0
        private static async Task GetAuthorsAndBooks(Container dsc)
        {
            DataServiceQuery <Author> query = dsc.CreateQuery <Author>("Authors");
            var response = await query.AddQueryOption("$expand", "Books").ExecuteAsync() as QueryOperationResponse <Author>;

            foreach (Author author in response)
            {
                Console.WriteLine($"Author: {author.Name}");
                foreach (Book book in author.Books)
                {
                    Console.WriteLine($"Book: {book.Title}");
                }
            }
        }
Пример #13
0
        public List <SalesShipment> GetNAVShipments(string NAVInstanceName, string shipmentDateFilter)
        {
            try
            {
                string URL       = Properties.Settings.Default[NAVInstanceName].ToString();
                string WS_User   = Properties.Settings.Default[NAVInstanceName + "_User"].ToString();
                string WS_Pwd    = Properties.Settings.Default[NAVInstanceName + "_Pwd"].ToString();
                string WS_Domain = Properties.Settings.Default[NAVInstanceName + "_Domain"].ToString();

                DataServiceContext context = new DataServiceContext(new Uri(URL));

                NAVODATAWS.NAV NAV = new NAVODATAWS.NAV(new Uri(URL));
                NAV.Credentials = new System.Net.NetworkCredential(WS_User, WS_Pwd, WS_Domain);

                DataServiceQuery <NAVODATAWS.ItemShipments> q = NAV.CreateQuery <NAVODATAWS.ItemShipments>("ItemShipments");

                if (shipmentDateFilter != null)
                {
                    string FilterValue = string.Format("Shipment_Date ge datetime'{0}'", shipmentDateFilter);
                    q = q.AddQueryOption("$filter", FilterValue);
                }

                List <NAVODATAWS.ItemShipments> list = q.Execute().ToList();

                List <SalesShipment> sslist = new List <SalesShipment>();

                foreach (NAVODATAWS.ItemShipments shpt in list)
                {
                    SalesShipment ss = new SalesShipment();
                    ss.No           = shpt.No;
                    ss.CustomerNo   = shpt.Sell_to_Customer_No;
                    ss.ItemNo       = shpt.ItemNo;
                    ss.Description  = shpt.Description;
                    ss.Description2 = shpt.Description_2;
                    ss.UoM          = shpt.Unit_of_Measure;
                    ss.Quantity     = shpt.Quantity;
                    ss.ShipmentDate = shpt.Shipment_Date;
                    sslist.Add(ss);
                }

                return(sslist);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private TableCommand <ResultSegment <TElement>, IEnumerable <TElement> > GenerateExecuteCommand(TableContinuationToken continuationToken, TableRequestOptions requestOptions)
        {
            DataServiceQuery <TElement> localQuery = this.Query;

            // Continuation
            localQuery = TableUtilities.ApplyContinuationToQuery <TElement>(continuationToken, localQuery);

            if (requestOptions.ServerTimeout.HasValue)
            {
                localQuery = localQuery.AddQueryOption("timeout", Convert.ToString(requestOptions.ServerTimeout.Value.TotalSeconds));
            }

            TableCommand <ResultSegment <TElement>, IEnumerable <TElement> > cmd = new TableCommand <ResultSegment <TElement>, IEnumerable <TElement> >();

            cmd.ExecuteFunc   = localQuery.Execute;
            cmd.Begin         = (callback, state) => localQuery.BeginExecute(callback, state);
            cmd.End           = localQuery.EndExecute;
            cmd.ParseResponse = this.ParseTableQueryResponse;
            cmd.ApplyRequestOptions(requestOptions);
            cmd.Context = this.Context;
            return(cmd);
        }
Пример #15
0
 public static DataServiceQuery <TElement> AddServerCondition <TElement>(this DataServiceQuery <TElement> q, string serverConditionName)
 {
     return(q.AddQueryOption("rf.condition", serverConditionName));
 }
Пример #16
0
        public static DataServiceQuery <T> Filter <T>(this DataServiceQuery <T> dataServiceQuery, object filterValue)
        {
            Contract.Requires(null != filterValue);

            return(dataServiceQuery.AddQueryOption(DataService.QueryOption.FILTER, filterValue));
        }
Пример #17
0
 public static DataServiceQuery <TElement> AddFilters <TElement>(this DataServiceQuery <TElement> q, FilterParameterCollection fc)
 {
     return(q.AddQueryOption("rf.filter", HttpUtility.UrlEncode(fc.JsonSerialize(), Encoding.GetEncoding(1251))));
 }
Пример #18
0
 public static DataServiceQuery <TElement> AddOrders <TElement>(this DataServiceQuery <TElement> q, SortParameterCollection sc)
 {
     return(q.AddQueryOption("rf.orderby", HttpUtility.UrlEncode(sc.JsonSerialize(), Encoding.GetEncoding(1251))));
 }
        public SearchResult[] ContextAwareSearch([FromUri] string query, [FromUri] string[] keywords)
        {
            query = query.Trim();
            List <string> queryModifications = new List <string>();

            queryModifications.Add("learning " + query);
            queryModifications.Add(query + " events");
            queryModifications.Add(query + " basics");
            queryModifications.Add(query + " research");
            queryModifications.Add(query + " courses");

            string[] context = { "coursera", "instructables", "edx", "udacity", "itunesu", "github", "khan academy" };

            //Set default web proxy - ONLY NEEDED FOR 1AND1 HOSTING
            //WebRequest.DefaultWebProxy = new WebProxy("ntproxyus.lxa.perfora.net", 3128);

            //Set up Bing connection
            string rootUri       = "https://api.datamarket.azure.com/Bing/Search";
            var    bingContainer = new Bing.BingSearchContainer(new Uri(rootUri));
            var    accountKey    = ConfigurationManager.AppSettings["BING_KEY"];

            bingContainer.Credentials = new NetworkCredential(accountKey, accountKey);

            //Set up search results list
            List <IEnumerable <Bing.WebResult> > searchResults = new List <IEnumerable <Bing.WebResult> >();

            //Search for given topic
            DataServiceQuery <Bing.WebResult> webQuery = bingContainer.Web(query, null, null, "en-us", null, null, null, null);

            webQuery = webQuery.AddQueryOption("$top", 20);
            searchResults.Add(webQuery.Execute());

            //Search for keywords
            foreach (string keyword in keywords)
            {
                webQuery = bingContainer.Web(query + keyword.Trim(), null, null, "en-us", null, null, null, null);
                webQuery = webQuery.AddQueryOption("$top", 20);
                searchResults.Add(webQuery.Execute());
            }

            //Add using query modifications
            foreach (string queryMod in queryModifications)
            {
                webQuery = bingContainer.Web(queryMod, null, null, "en-us", null, null, null, null);
                webQuery = webQuery.AddQueryOption("$top", 20);
                searchResults.Add(webQuery.Execute());
            }

            //Parse search results
            List <SearchResult> items = new List <SearchResult>();
            int listNumber            = 1;

            for (int i = 0; i < searchResults.Count; i++)
            {
                int initialRank = listNumber;
                foreach (Bing.WebResult result in searchResults[i])
                {
                    int          rank = initialRank;
                    SearchResult temp = new SearchResult();
                    temp.title       = result.Title;
                    temp.description = result.Description;
                    temp.url         = result.Url;

                    //Modify rank based on user preferences
                    foreach (string keyword in keywords)
                    {
                        if (result.Title.ToLower().Contains(keyword))
                        {
                            rank = rank / 4;
                        }
                        else if (result.Description.ToLower().Contains(keyword))
                        {
                            rank = rank / 2;
                        }
                    }

                    //Modify rank based on static context
                    foreach (string word in context)
                    {
                        if (result.Url.ToLower().Contains(word))
                        {
                            rank = rank / 10;
                        }
                        else if (result.Title.ToLower().Contains(word))
                        {
                            rank = rank / 4;
                        }
                        else if (result.Description.ToLower().Contains(word))
                        {
                            rank = rank / 2;
                        }
                    }

                    if (result.Url.ToLower().Contains("youtube"))
                    {
                        rank = rank * 100;
                    }
                    else if (result.Title.ToLower().Contains("youtube"))
                    {
                        rank = rank * 100;
                    }
                    else if (result.Description.ToLower().Contains("youtube"))
                    {
                        rank = rank * 100;
                    }

                    temp.ranking = rank;
                    items.Add(temp);
                    initialRank += 100;
                }
                listNumber++;
            }

            //Sort results by rank
            items.Sort((s1, s2) => s1.ranking.CompareTo(s2.ranking));
            List <string> results = new List <string>();

            foreach (SearchResult item in items)
            {
                results.Add(item.title + "\n" + item.description + "\n" + item.url + "\n\n");
            }

            SearchResult[] resultArray = items.ToArray();
            return(resultArray);
        }
Пример #20
0
        // permite realizar queries a cualquier entidad, con cualquier no de params (e.g. id=23) y filtros (e.g. $expand)
        public ObservableCollection <object> LoadAllEntities <T>(string entitySetName, IDictionary <string, object> entityParams, IDictionary <string, object> filters) where T : class
        // public IList<object> LoadAllEntities<T>(string entitySetName, IDictionary<string, object> entityParams, IDictionary<string, object> filters) where T : class
        {
            UriOperationParameter[] myParams = null;

            IEnumerable <object> result = null;

            DataServiceQuery <T> query = null;

            if (this.container == null)
            {
                return(null);
            }
            if (string.IsNullOrEmpty(entitySetName))
            {
                return(null);
            }
            if (entityParams == null)
            {
                query = this.container.CreateQuery <T>(entitySetName);
            }
            else
            {
                int count = entityParams.Count;
                if (count > 0)
                {
                    myParams = new UriOperationParameter[count];

                    int i = 0;
                    foreach (string paramKey in entityParams.Keys)
                    {
                        // check for null value here
                        myParams[i++] = new UriOperationParameter(paramKey, entityParams[paramKey]);
                    }

                    query = this.container.CreateFunctionQuery <T>("", entitySetName, false, myParams);
                }
            }
            if (query == null)
            {
                return(null);
            }
            if (filters != null)
            {
                foreach (string filter in filters.Keys)
                {
                    object filterValue = filters[filter];
                    if (filterValue != null)
                    {
                        // Immutability here ?
                        query = query.AddQueryOption(filter, filterValue);
                    }
                }
            }

            try
            {
                // 1.- Query
                // The service is down or any other network related issue(s)
                result = query.Execute();

                // Synchronous operation ???
                var list = result.ToList();

                // return list;
                return(new ObservableCollection <object>(list));
            }
            catch (Exception ex)
            {
                //this.statusInfo.Text = ex.Message;
                // this.errorMessage = ex.Message;
            }

            return(null);
        }
        /// <summary>
        /// </summary>
        /// <param name="Sources">Bing search sources Sample Values : web+image+video+news+spell</param>
        /// <param name="Query">Bing search query Sample Values : xbox</param>
        /// <param name="Options">Specifies options for this request for all Sources. Valid values are: DisableLocationDetection, EnableHighlighting. Sample Values : EnableHighlighting</param>
        /// <param name="WebSearchOptions">Specify options for a request to the Web SourceType. Valid values are: DisableHostCollapsing, DisableQueryAlterations. Sample Values : DisableQueryAlterations</param>
        /// <param name="Market">Market. Note: Not all Sources support all markets. Sample Values : en-US</param>
        /// <param name="Adult">Adult setting is used for filtering sexually explicit content Sample Values : Moderate</param>
        /// <param name="Latitude">Latitude Sample Values : 47.603450</param>
        /// <param name="Longitude">Longitude Sample Values : -122.329696</param>
        /// <param name="WebFileType">File extensions to return Sample Values : XLS</param>
        /// <param name="ImageFilters">Array of strings that filter the response the API sends based on size, aspect, color, style, face or any combination thereof. Valid values are: Size:Small, Size:Medium, Size:Large, Size:Width:[Width], Size:Height:[Height], Aspect:Square, Aspect:Wide, Aspect:Tall, Color:Color, Color:Monochrome, Style:Photo, Style:Graphics, Face:Face, Face:Portrait, Face:Other. Sample Values : Size:Small+Aspect:Square</param>
        /// <param name="VideoFilters">Array of strings that filter the response the API sends based on size, aspect, color, style, face or any combination thereof. Valid values are: Duration:Short, Duration:Medium, Duration:Long, Aspect:Standard, Aspect:Widescreen, Resolution:Low, Resolution:Medium, Resolution:High. Sample Values : Duration:Short+Resolution:High</param>
        /// <param name="VideoSortBy">The sort order of results returned Sample Values : Date</param>
        /// <param name="NewsLocationOverride">Overrides Bing location detection. This parameter is only applicable in en-US market. Sample Values : US.WA</param>
        /// <param name="NewsCategory">The category of news for which to provide results Sample Values : rt_Business</param>
        /// <param name="NewsSortBy">The sort order of results returned Sample Values : Date</param>
        public DataServiceQuery <ExpandableSearchResult> Composite(String Sources, String Query, String Options,
                                                                   String WebSearchOptions, String Market, String Adult,
                                                                   Double?Latitude, Double?Longitude, String WebFileType,
                                                                   String ImageFilters, String VideoFilters,
                                                                   String VideoSortBy, String NewsLocationOverride,
                                                                   String NewsCategory, String NewsSortBy)
        {
            if ((Sources == null))
            {
                throw new ArgumentNullException("Sources", "Sources value cannot be null");
            }
            if ((Query == null))
            {
                throw new ArgumentNullException("Query", "Query value cannot be null");
            }
            DataServiceQuery <ExpandableSearchResult> query = base.CreateQuery <ExpandableSearchResult>("Composite");

            query = query.AddQueryOption("Sources", string.Concat("\'", Uri.EscapeDataString(Sources), "\'"));
            query = query.AddQueryOption("Query", string.Concat("\'", Uri.EscapeDataString(Query), "\'"));
            if ((Options != null))
            {
                query = query.AddQueryOption("Options", string.Concat("\'", Uri.EscapeDataString(Options), "\'"));
            }
            if ((WebSearchOptions != null))
            {
                query = query.AddQueryOption("WebSearchOptions",
                                             string.Concat("\'", Uri.EscapeDataString(WebSearchOptions), "\'"));
            }
            if ((Market != null))
            {
                query = query.AddQueryOption("Market", string.Concat("\'", Uri.EscapeDataString(Market), "\'"));
            }
            if ((Adult != null))
            {
                query = query.AddQueryOption("Adult", string.Concat("\'", Uri.EscapeDataString(Adult), "\'"));
            }
            if (((Latitude != null)))
            {
                query = query.AddQueryOption("Latitude", Latitude.Value);
            }
            if (((Longitude != null)))
            {
                query = query.AddQueryOption("Longitude", Longitude.Value);
            }
            if ((WebFileType != null))
            {
                query = query.AddQueryOption("WebFileType", string.Concat("\'", Uri.EscapeDataString(WebFileType), "\'"));
            }
            if ((ImageFilters != null))
            {
                query = query.AddQueryOption("ImageFilters", string.Concat("\'", Uri.EscapeDataString(ImageFilters), "\'"));
            }
            if ((VideoFilters != null))
            {
                query = query.AddQueryOption("VideoFilters", string.Concat("\'", Uri.EscapeDataString(VideoFilters), "\'"));
            }
            if ((VideoSortBy != null))
            {
                query = query.AddQueryOption("VideoSortBy", string.Concat("\'", Uri.EscapeDataString(VideoSortBy), "\'"));
            }
            if ((NewsLocationOverride != null))
            {
                query = query.AddQueryOption("NewsLocationOverride",
                                             string.Concat("\'", Uri.EscapeDataString(NewsLocationOverride), "\'"));
            }
            if ((NewsCategory != null))
            {
                query = query.AddQueryOption("NewsCategory", string.Concat("\'", Uri.EscapeDataString(NewsCategory), "\'"));
            }
            if ((NewsSortBy != null))
            {
                query = query.AddQueryOption("NewsSortBy", string.Concat("\'", Uri.EscapeDataString(NewsSortBy), "\'"));
            }
            return(query);
        }