c# - 仅当值不为空时才将值添加到 C# 中的字符串

标签 c#

我正在尝试创建一个 API 调用,它将地址的各个部分传递给地址验证服务。地址必须作为单个查询参数传递。

使用下面的代码

string input_address = HttpUtility.UrlEncode( string.Format( "{0} {1} {2} {3}",
            location.Street1, location.Street2, location.City, location.PostalCode ) );

如果地址的所有部分都存在,则查询成功,但如果缺少多个部分,则 + 号会累积,您最终会得到类似的查询。 /?api_key=####&query=++ID1+1QD&limit=1 由于额外的“+”号而失败。

是否可以在不使用一组 if 语句的情况下仅将不为 null 的值传递给字符串?

完整代码如下:

string input_key = GetAttributeValue( "APIKey" );
string input_address = HttpUtility.UrlEncode( string.Format( "{0} {1} {2} {3}",
    location.Street1, location.Street2, location.City, location.PostalCode ) );

var client = new RestClient("https://api.ideal-postcodes.co.uk/");
var request = new RestRequest( Method.GET );
request.RequestFormat = DataFormat.Json;
request.Resource = "v1/addresses/";
request.AddParameter("api_key", input_key);
request.AddParameter("query", input_address);
request.AddParameter("limit", "1");
request.AddHeader("Accept", "application/json");
var response = client.Execute( request );

最佳答案

对于核心问题,是否可以在不使用一组 if 语句的情况下仅将不为空的值传递给字符串?

string[] addressParts = 
   { location.Street1, location.Street2, location.City, location.PostalCode};

string inputAddress = string.Join(" ", addressParts.Where(s=> !string.IsNullOrEmpty(s)));
inputAddress = HttpUtility.UrlEncode(inputAddress);

关于c# - 仅当值不为空时才将值添加到 C# 中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28650726/

相关文章:

c# - 如何创建一个dll文件

C# Sql Server Express 未永久保存

c# - 如何衡量等待异步操作的性能?

c# - 获取特定的 StackFrame 而不是 StackTrace.GetFrame 是否更便宜?

c# - 将文件发送到队列 RabbitMQ

c# - SQL Server 群集的连接字符串

c# - 用图表表示历史

c# - 在linq中获取多个不同的分组值

c# - Mysql 重复键更新查询错误

c# - .NET : Create custom control like UItableView in iPhone SDK