用LINQ替换字符串值

本文关键字:字符串 替换 LINQ | 更新日期: 2023-09-27 18:19:04

我有以下包含列名的字符串:

string colsToSelect;

该字符串包含列名(例如:col1+col2+col3+col4+col5或col1+col3),并且在这些列中有数值。

我正在使用这个从数据库中获得所有这些列的总数。

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

然而,我需要在每个列中添加nvl(col1,0),因为这些列可能包含null。

我是这样做到的:

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

这给了我nvl(col1, 0) + nvl(col2, 0)等。但我想知道是否有更好的方法来实现这一点,可能与LINQ或sql?

用LINQ替换字符串值

您可以使用string.Split,然后再使用string.Join:

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