在C#方法中创建动态联合选择

时间:2017-02-10 05:16:00

标签: c# sql entity-framework

有人可以改进我在C#中位于同一服务器内的2个数据库中创建联合选择视图的方法,以下是该方法的代码:

public override DataSet GetDynamicReportData(string strSQL) {

            var sbSQL = new StringBuilder(strSQL);
            var finalQueryStr = new StringBuilder(strSQL);

            sbSQL.Replace("SELECT DISTINCT ", "");

            var iamNEAS3 =
                new StringBuilder(" UNION SELECT DISTINCT ");

            var queryColumns = sbSQL.ToString().Split(',');

            for (var i = 0; i <= queryColumns.Length - 1; i++) {

                iamNEAS3.Append(queryColumns[i]);

                if (i < queryColumns.Length - 1) {
                    iamNEAS3.Append(", ");
                } else if (i == queryColumns.Length - 1) {

                    var appendMagic =
                        queryColumns[i].Replace(
                            "From [dbo].[vw_Classified_ApplicationsFiles]",
                            "FROM [project_phoenix].[dbo].[vw_Classified_ApplicationFiles]")

                    iamNEAS3.Append(appendMagic);

                    // Systematic removal; thank you!
                    iamNEAS3.Replace(queryColumns[i], "");
                }
            }

            finalQueryStr.Append(iamNEAS3);

            return DALDynamicReport.GetData(finalQueryStr.ToString());
        }

现在它收到一个字符串参数

strSQL = "Select Distinct [Row1], [Row2], [Row3], [Row4] From [project_mongoose].[dbo].[vw_Classified_ApplicationsFiles] where [Row2] <= 200". 

我知道我的编程技巧有限,但有没有办法像我一样不用手工编写代码呢?

1 个答案:

答案 0 :(得分:0)

烨。不要这样做。甚至不要这么想。你能想象组装这样的应用程序代码,在字符串文字中漂浮的片段,从其他地方吸入的一部分,在最后一分钟添加一点,一点Replace(),然后执行以查看什么得到吐口水出来,如果它运行?恶梦

我敢肯定,如果你认真对待这个要求,你可以想出一个更好的方法。