C# 7.0 now allows using underscore _ to be used a digit separator.
This adds more readability.
Similarly, we now have Binary Literals, so instead of specifying hexadecimal pattern we can specify bit patterns.
Hope it helps..
C# 7.0 now allows using underscore _ to be used a digit separator.
This adds more readability.
Similarly, we now have Binary Literals, so instead of specifying hexadecimal pattern we can specify bit patterns.
Hope it helps..
Out Parameters must need to declared before they are used in the method which doesn’t seem intuitive.
Now with C# 7.0 we can now make use of Out variable.
Here in our second call to the method we have used out variable named outVariableString which we didn’t have to declare like output parameter.
Hope it helps..
Tuple are used when we need to get more than one value returned from the method.
C# 7.0 introduces Tuple Types and Tuple Literals to Tuples
We need to add System.ValueType Nuget Package to add the required assemblies to Visual Studio.
Below sample code shows usage of Tuple type and literal. In our second method, we have named the part of the tuple i.e. name and number.
Now to access the first method we use Item1 and Item2 field, however for our second method as we have named the part we can use those names to access them i.e. name and number.
Output in both the case
Hope it helps..
C# 7.0 adds a new feature called local functions.
Local functions allow us to define function within a function. It can be used to write helper methods that we need to use inside that function’s scope.
Here in the below sample code we have defined one main function (MainFunction) that has one local function(MultiplyBy10LocalFunction) defined inside it. And that local function has one more local function(Add10LocalFunction) defined inside it.
Hope it helps..
Sharing a sample code that can be used to consume UNData API
http://data.un.org/Host.aspx?Content=API
The below code fetches the population data for country India.
Sample Code
var xmlHttp; // creatng the xmlHttp object xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); // Calling the web service using post and true means asynchronous call xmlHttp.open("POST", "http://data.un.org/WS/NSIEstatV20Service.asmx", false); // Setting the request header to let the web service find the soap request we would be sending xmlHttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); xmlHttp.setRequestHeader("SOAPAction", "http://ec.europa.eu/eurostat/sri/service/2.0/extended/GetCompactData"); var soapRequest = "<!--?<span class="hiddenSpellError" pre="" data-mce-bogus="1"-->xml version='1.0' encoding='utf-8'?>"+ "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+ "<soap:Body>"+ "<GetCompactData xmlns='http://ec.europa.eu/eurostat/sri/service/2.0/extended'>"+ "<Query>"+ "<message:QueryMessage xsi:schemaLocation='http://ec.europa.eu/eurostat/sri/service/2.0/SDMXMessage.xsd http://ec.europa.eu/eurostat/sri/service/2.0/%20SDMXMessage.xsd' xmlns:generic='http://www.SDMX.org/resources/SDMXML/schemas/v2_0/generic' xmlns:message='http://www.SDMX.org/resources/SDMXML/schemas/v2_0/message' xmlns:query='http://www.SDMX.org/resources/SDMXML/schemas/v2_0/query' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>"+ "<message:Header>"+ "<message:ID>onh14833545733929527</message:ID>"+ "<message:Test>false</message:Test>"+ "<message:Prepared>2017-01-01</message:Prepared>"+ "<message:Sender id='online-help' />"+ "</message:Header>"+ "<message:Query>"+ "<query:DataWhere>"+ "<query:And>"+ "<query:Dimension id='INDICATOR'>SP_POP_TOTL</query:Dimension>"+ "<query:Dimension id='AGE'>_T</query:Dimension>"+ "<query:Dimension id='SEX'>_T</query:Dimension>"+ "<query:Dimension id='LOCATION'>_T</query:Dimension>" + "<query:Dimension id='REF_AREA'>DEU</query:Dimension>" + "<query:Dimension id='SCENARIO'>H</query:Dimension>"+ "<query:Time>"+ "<query:StartTime>2014-01-02</query:StartTime>"+ "<query:EndTime>2017-01-02</query:EndTime>"+ "</query:Time>"+ "<query:Dataflow>DF_UNDATA_WPP</query:Dataflow>"+ "</query:And>"+ "</query:DataWhere>"+ "</message:Query>"+ "</message:QueryMessage>"+ "</Query>"+ "</GetCompactData>"+ "</soap:Body>" + "</soap:Envelope>"; xmlHttp.send(soapRequest); var xmlDoc = jQuery.parseXML(xmlHttp.responseText); var popValue = xmlDoc.getElementsByTagName('ns1:Obs')['0'].attributes['OBS_VALUE'].nodeValue; alert("Total Population " + popValue);
Output
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body><GetCompactDataResponse xmlns="http://ec.europa.eu/eurostat/sri/service/2.0/extended"> <GetCompactDataResult> <CompactData xmlns:ns1="urn:sdmx:org.sdmx.infomodel.datastructure.DataStructure =UNSD:DSD_WPP_UNDATA(1.0):ObsLevelDim:TIME_PERIOD" xmlns="http://www.SDMX.org/resources/SDMXML/schemas/v2_0/message" xmlns:common="http://www.SDMX.org/resources/SDMXML/schemas/v2_0/common" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xml="http://www.w3.org/XML/1998/namespace"><Header> <ID>DF_UNDATA_WPP</ID><Test>false</Test><Prepared>2017-01-06T08:25:46 </Prepared> <Sender id="1B0"> <Name xml:lang="en">United Nations Statistics Division</Name> <Contact><Email>statistics@un.org</Email></Contact></Sender> <KeyFamilyRef>DSD_WPP_UNDATA</KeyFamilyRef><KeyFamilyAgency>UNSD </KeyFamilyAgency><DataSetAgency>UNSD</DataSetAgency> <DataSetID>DF_UNDATA_WPP_1B0_2017-01-06T082546</DataSetID> <DataSetAction>Information</DataSetAction> <Extracted>2017-01-06T08:25:46</Extracted> <Source xml:lang="en"> United Nations Population Division World Population Prospects</Source> </Header> <ns1:DataSet DATASET_NAME="World Population Prospects" DATASET_SOURCE="United Nations Population Division" DATASET_DESC="The United Nations World Population Prospects contains estimates and projections for every country in the world, including estimates and projections of demographic indicators such as birth rates, deaths rates, infant mortality rates and life expectancy." UNDATA_LASTUPDATE="20 Aug 2013" UNDATA_NEXTUPDATE="2015 release" METADATA="http://esa.un.org/unpd/wpp/index.htm"><ns1:Series AGE="_T" FREQ="A" INDICATOR="SP_POP_TOTL" LOCATION="_T" SEX="_T" REF_AREA="DEU" SCENARIO="H"><ns1:Obs TIME_PERIOD="2015" OBS_VALUE="83178.615" UNIT="NUMBER" UNIT_MULT="3" TIME_SPAN="2015" /></ns1:Series></ns1:DataSet></CompactData></GetCompactDataResult></GetCompactDataResponse></soap:Body></soap:Envelope>
Hope it helps.
Hi,
Recently we were working on an application that had to fetch country specific details. For this we used the UNData API.
http://data.un.org/Host.aspx?Content=API
We can make use of SDMX Browser in helping us to write a query
http://data.un.org/SdmxBrowser/start
Create a console app\windows application and add web reference to the following web service
http://data.un.org/WS/NSIEstatV20Service.asmx
Below is the sample C# Code
string queryMsg = @"<message:QueryMessage xsi:schemaLocation='http://ec.europa.eu/eurostat/sri/service/2.0/SDMXMessage.xsd http://ec.europa.eu/eurostat/sri/service/2.0/%20SDMXMessage.xsd' xmlns:generic='http://www.SDMX.org/resources/SDMXML/schemas/v2_0/generic' xmlns:message='http://www.SDMX.org/resources/SDMXML/schemas/v2_0/message' xmlns:query='http://www.SDMX.org/resources/SDMXML/schemas/v2_0/query' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'> <message:Header> <message:ID>onh14833545733929527</message:ID> <message:Test>false</message:Test> <message:Prepared>2017-01-01</message:Prepared> <message:Sender id='online-help'/> </message:Header> <message:Query> <query:DataWhere> <query:And> <query:Dimension id='INDICATOR'>SP_POP_TOTL</query:Dimension> <query:Dimension id='AGE'>_T</query:Dimension> <query:Dimension id='SEX'>_T</query:Dimension> <query:Dimension id='LOCATION'>_T</query:Dimension> <query:Dimension id='REF_AREA'>IND</query:Dimension> <query:Time> <query:StartTime>2014-01-02</query:StartTime> <query:EndTime>2017-01-02</query:EndTime> </query:Time> <query:Dataflow>DF_UNDATA_WPP</query:Dataflow> </query:And> </query:DataWhere> </message:Query> </message:QueryMessage>"; NSIEstatV20Service service = new NSIEstatV20Service(); System.Xml.XmlDocument queryMessageDocument = new XmlDocument(); queryMessageDocument.LoadXml(queryMsg); System.Xml.XmlNode queryMessage = queryMessageDocument.DocumentElement; var result = service.GetCompactData(queryMessage); MessageBox.Show(result.InnerXml);
The output
The query here basically returns the Total population of India
Hope it helps..