2011-08-17 31 views
0

我正在使用SSIS(VS 2008),並且想要將填充的結果集變量(從EXECUTE SQL任務填充)轉換爲SSIS腳本組件(c#)並將其轉換爲數組。將結果集變量轉換爲數組

結果集包含一列。

這是什麼代碼?

編輯:這是爲了回填練習;在正常情況下,一個Web應用程序調用在穿過文本字符串,並獲取基於這種查詢匹配單詞的列表,DB一個進程:

SELECT [Term] 
    FROM [dbo].[ATableOFTerms] WITH (NOLOCK)  
    WHERE CHARINDEX(' ' + Term + ' ', @StringBeingSearched) > 0 

一旦Web應用程序得到這個名單,它具有圍繞它轉換的許多業務規則,但本質上它需要匹配項的列表,並生成一個單一的字符串,然後用於傳遞全文搜索。

SSIS中的回填過程需要模仿,以便腳本組件具有相同的Web應用程序代碼來處理業務邏輯,但是我需要執行上述操作的c#代碼。這很好,我將所有[ATableTerms]返回到結果集變量中,但現在我需要從變量中填充數組。

當我有這個我可以使用string.Contains來實現相同的結果。

回答

0

IndexOf(term,StringComparison.OrdinalIgnoreCase)> = 0這是如何解決的,儘管我很想得到一個替代方案。

OleDbDataAdapter adapter = new OleDbDataAdapter(); 

string Title = " " + Row.Title + " ";   
DataTable dt = new DataTable(); 
adapter.Fill(dt , Variables.ATableOfTerms); 


ArrayList terms = new ArrayList(); 
ArrayList returnedTerms = new ArrayList(); 

foreach (DataRow dr in dt.Rows) 
{ 
    terms.Add(" " + dr["Term"] + " "); 

} 


foreach (string term in terms) 
{ 
    if (Title.IndexOf(term, StringComparison.OrdinalIgnoreCase) >= 0) 
    { 
     returnedTerms.Add(term.Trim()); 

    } 
} 
+0

我不得不這樣做的唯一的另一件事是使條款ArrayList的靜態否則就只能使用一次。(第一排)。 – 2011-08-18 09:53:52