我的数据库中有两个不同的表,每个表都根据用户的“SortOrder”显示给用户。我编写了两个函数,它们占用一行(或实体)并将其排序顺序与最近的一个交换排序顺序(向上或向下,取决于正在执行的函数)。我需要使这些函数适用于两个不同的表,具体取决于事件发生的位置(具有相同功能的多个网格视图)。这是我到目前为止所拥有的(再次,向下移动有一个几乎相同的功能,但我不会发布它,因为它是多余的):
protected void moveUp(String ValId, String dbName)
{
int ValueId = Convert.ToInt32(ValId);
DataModel.DataAccess.Entities dc = new DataModel.DataAccess.Entities();
if (dbName.ToLower() == "table1")
{
DataModel.DataAccess.Table1 currentValue = dc.Table1.Single(table1item => table1item.Table1ItemId == ValueId);
}
else if (dbName.ToLower() == "table2")
{
DataModel.DataAccess.Table2 currentValue = dc.Table2.Single(table2item => table2item.Table2ItemId == ValueId);
}
try
{
//make the change and update the database and gridview
}
catch (InvalidOperationException)
{
}
}
明显的问题是我需要在 if 语句之前启动currentValue变量,否则它永远不会被声明的“可能性”,因此函数的其余部分(利用 currentValue 变量)将不起作用。
我的问题是:如果我不确定它会是什么,我应该如何在 if 语句之前初始化变量?我认为这可能有效,但它说我仍然需要初始化它(“必须初始化隐式类型的局部变量”):
var currentValue; //this is the line where I get the error message above
if (dbName.ToLower() == "table1")
{
currentValue = (DataModel.DataAccess.Table1)dc.Table1.Single(table1item => table1item.Table1ItemId == ValueId);
}
else if (dbName.ToLower() == "table2")
{
currentValue = (DataModel.DataAccess.Table2)dc.Table2.Single(table2item => table2item.Table2ItemId == ValueId);
}
[编辑] 更改标题以使其更准确地反映我的问题