小编Bea*_*Hat的帖子

一种可以分解三元表达式的工具

我正在使用的当前项目的先前开发人员似乎决定创建一些有效且无法管理的代码.

在整个代码中,我发现了多条件三元表达式.翻译和重写/重构它们变得令人头疼.

有没有人知道一个免费工具,独立或作为VS 2008的加载项,可以分解三元表达式?CodeRush在这个项目上没有预算.如果需要,我会继续重新编码,但我想在这里有一点希望.

以下是该问题的一个示例:

sNoteType = objSelection.Items[1].Selected ? 
    objSelection.Items[0].Selected ? 
    objSelection.Items[3].Selected ? 
    objSelection.Items[4].Selected ? 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " :
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " :
    string.Empty + "LT " : 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ?
    string.Empty + "OV " : 
    string.Empty + "EV " : 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + "BA " : 
    objSelection.Items[4].Selected ? 
    objSelection.Items[5].Selected ? 
    objSelection.Items[2].Selected ? 
    string.Empty + "OV " : 
    string.Empty + …
Run Code Online (Sandbox Code Playgroud)

c# visual-studio-2008

13
推荐指数
4
解决办法
1557
查看次数

TSQL函数在存储过程强制列中用于只读

设置:将DataReader加载到DataTable中.加载后尝试更改DataTable中的列.

问题:尝试更改列时触发了ReadOnlyException.

条件:

  • 当函数(udf或system)应用于存储过程中的别名列时,该列将变为ReadOnly.
  • 如果列简单别名而未应用任何函数,则不会触发错误.
  • 如果将select移动到table-function,则不会触发错误,然后proc从该函数中选择.
  • 在C#中将列属性设置为ReadOnly时,不会发生错误(显然).

问题:是否有任何方法可以更改过程,以便应用了函数的别名列不是ReadOnly?我正在寻找一个替代方案来更改C#或创建一个函数来执行proc已经执行的操作.

C#:

var dt = new DataTable();
using( var sqlDR = objDocsFBO.GetActiveDocsMerged(KeyID) )
{
    dt.Load(sqlDR);
}
foreach( DataRow dr in dt.Rows )
{
    //Testing Alias Alone - Pass
    dr["DocumentPathAlias"] = "file:///" + Server.UrlEncode(dr["DocumentPathAlias"].ToString()).Replace("+", "%20");
    //Testing Function Applied - Fail
    //dr["DocumentPath"] = "file:///" + Server.UrlEncode(dr["DocumentPath"].ToString()).Replace("+", "%20");
}
Run Code Online (Sandbox Code Playgroud)

SQL:

GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[usp_ActiveDocs_RetrieveMerged]
@KeyID INT
AS 
BEGIN
--Testing Select From Function
--SELECT * FROM dbo.ufn_ActiveDocs_RetrieveMerged(@KeyID) --Pass
SELECT …
Run Code Online (Sandbox Code Playgroud)

c# t-sql sql-server-2008

5
推荐指数
1
解决办法
395
查看次数

标签 统计

c# ×2

sql-server-2008 ×1

t-sql ×1

visual-studio-2008 ×1