我正在使用的当前项目的先前开发人员似乎决定创建一些有效且无法管理的代码.
在整个代码中,我发现了多条件三元表达式.翻译和重写/重构它们变得令人头疼.
有没有人知道一个免费工具,独立或作为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) 设置:将DataReader加载到DataTable中.加载后尝试更改DataTable中的列.
问题:尝试更改列时触发了ReadOnlyException.
条件:
问题:是否有任何方法可以更改过程,以便应用了函数的别名列不是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)