要在.NET 2.0(無LINQ)中執行此操作,例如,對於SQL-服務器ReportingServices,而無需爲它編寫一個函數:
VB.NET
Dim a As String = "", b As String = "b", c As String = "", d As String = "d", e As String = ""
Dim lala As String = String.Join("/", String.Join(vbBack, New String() {a, b, c, d, e}).Split(New Char() {ControlChars.Back}, System.StringSplitOptions.RemoveEmptyEntries))
System.Console.WriteLine(lala)
C#(對於那些從谷歌登陸,而不是尋找VB.NET)
string a = "", b = "b", c = "", d = "d", e = "";
string lala = string.Join("/",
string.Join("\u0008",
new string[] { a, b, c, d, e }
).Split(new char[] { '\u0008' }, System.StringSplitOptions.RemoveEmptyEntries)
);
System.Console.WriteLine(lala);
這假設字符退格不會出現在你的字符串中(通常應該是真的,因爲你不能簡單地通過鍵盤輸入這個字符)。
另外,如果你從數據庫中獲取的值,那麼它就更簡單了,因爲你可以直接做在SQL:
PostgreSQL的& MySQL的:
SELECT
concat_ws('/'
, NULLIF(searchTerm1, '')
, NULLIF(searchTerm2, '')
, NULLIF(searchTerm3, '')
, NULLIF(searchTerm4, '')
) AS RPT_SearchTerms;
甚至與光榮MS - SQL服務器是可能的(PS:這是諷刺):
DECLARE @in_SearchTerm1 nvarchar(100)
DECLARE @in_SearchTerm2 nvarchar(100)
DECLARE @in_SearchTerm3 nvarchar(100)
DECLARE @in_SearchTerm4 nvarchar(100)
SET @in_SearchTerm1 = N'a'
SET @in_SearchTerm2 = N''
SET @in_SearchTerm3 = N'c'
SET @in_SearchTerm4 = N''
SELECT
COALESCE
(
STUFF
(
(
SELECT '/' + RPT_SearchTerm AS [text()]
FROM
(
SELECT NULLIF(@in_SearchTerm1, N'') AS RPT_SearchTerm, 1 AS RPT_Sort
UNION ALL SELECT NULLIF(@in_SearchTerm2, N'') AS RPT_SearchTerm, 2 AS RPT_Sort
UNION ALL SELECT NULLIF(@in_SearchTerm3, N'') AS RPT_SearchTerm, 3 AS RPT_Sort
UNION ALL SELECT NULLIF(@in_SearchTerm4, N'') AS RPT_SearchTerm, 4 AS RPT_Sort
) AS tempT
WHERE RPT_SearchTerm IS NOT NULL
ORDER BY RPT_Sort
FOR XML PATH(N''), TYPE
).value('.', 'nvarchar(MAX)')
,1
,3
,N''
)
,N''
) AS RPT_SearchTerms
我收到一個錯誤:「'哪裏'不是'System.Array'的成員」。我沒有看到MSDN上'Where'的任何內容:http://msdn.microsoft.com/en-us/library/system.array.aspx – Doug 2013-05-02 12:55:24
我對此有一些好運:'Array.FindAll(myArray ,Function(s)Not String.IsNullOrEmpty(s))'你能改變你的答案或解釋'Where'語句嗎? – Doug 2013-05-02 13:44:33
'Where方法來自'System.Linq',http://msdn.microsoft.com/en-us/library/bb534803.aspx – Damith 2013-05-02 13:47:19