I have two different tables in my database, and each are displayed to the user based on their "SortOrder". I have written two functions that take a row (or entity) and swaps its sort order with the one nearest it (up or down, depending on which function is being executed). I need to make these functions work for two different tables, depending on where the event is occurring (multiple gridviews with identical functionality). Here is what I have so far (again, there is an almost identical function for moving down, but I won't post that because it would be redundant):
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)
{
}
}
The obvious problem is that I need to initiate the currentValue variable before the if statements, otherwise there is the "possibility" of it never being declared, and therefore the rest of the function (that utilizes the currentValue variable), won't work.
My question is this: How should I initialize the variable before the if statements, if I'm not sure what its going to be yet? I thought that this might work, but it says I still need to initialize it ("implicitly-typed local variables must be initialized"):
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);
}
[EDIT] Changed the title to make it more accurately reflect my question