2013-06-18 23 views
0

替換字符串值I都包含下面的字符串的列名:與LINQ

string colsToSelect; 

此字符串包含列名(例如:COL1 + COL2 + COL3 + COL4 + COL5或COL1 + COL3),並在這些列有數值。

我正在使用它從數據庫中獲取所有這些列的總數。

SELECT " + colsToSelect + " AS totalVolume " + "FROM myTable 

但是我需要添加nvl(col1,0)到每個列,因爲那些列可能包含null。

我已經achived這樣的:

colsToSelect = colsToSelect.Replace("+", "+nvl("); 
    colsToSelect = colsToSelect.Replace("+", ",0)+"); 
    colsToSelect = "nvl(" + colsToSelect; 
    colsToSelect = colsToSelect + ",0)"; 

這給了我nvl(col1, 0) + nvl(col2, 0)等。但我不知道是否有實現這一目標的一個更好的辦法,可能與LINQ或SQL?

+0

我的解決方案是沒有任何好轉:'colsToSelect.Split( 「+」);''然後.ForEach()'預掛起「 nvl(「和append」,0)「並將它們連接在一起。沒有比你擁有的更好的了。 ('colsToSelect.Split(「+」)。ForEach(c => return「+ nvl(」+ c +「,0)」)。ToString();' – Richard

+0

爲什麼你的輸入作爲單個字符串進入一串字符串或其他數據結構? – Servy

回答

2

您可以再次使用string.Split,然後string.Join

colsToSelect = string.Join("+", 
        colsToSelect.Split('+') 
           .Select(x => string.Format("nvl({0}, 0)", x)));