我正在学习C#并不断收到错误“无法将类型'int'隐式转换为'short'”。
在我的数据库所在的Microsoft SQL Server中,U_Weeks_In_Month被定义为smallint。我该怎么做才能解决这个错误?
我尝试使用short.Parse,就像在年份文本字段中一样,但这不适用于该项目,即
U_Weeks_In_Month = short.Parse(item.WeekNumber),
任何解决方案?
我的代码是:
var weekInfos = SAPUtility.GetWeekInfo(dateTimePicker1.Value, 52);
// Create object
foreach (var item in weekInfos)
{
// Get new code
var newWeeklyCode = weeklyPeriodService.GenerateSAPCode();
var weeklyPeriodAdd =
new WeeklyPeriod
{
Code = newWeeklyCode,
Name = newWeeklyCode,
U_Tax_Year = short.Parse(txt_tax_year.Text),
U_Month = item.Month.ToString(),
U_Pay_Process_Status = "N",
U_Payroll_Year = short.Parse(txt_tax_year.Text),
U_Weeks_In_Month = item.WeekNumber,
U_Starting_date = item.FirstDayOfWeek,
U_Ending_date = item.LastDayOfWeek,
};
// Save record
weeklyPeriodService.AddWeeklyPeriod(weeklyPeriodAdd);
}
答案 0 :(得分:4)
我怀疑你只需要:
U_Weeks_In_Month = (short) item.WeekNumber
另一种方法是将WeekNumber
属性更改为short
以开始。
此外,我将txt_tax_year.Text
解析为循环:
short taxYear = short.Parse(txt_tax_year.Text);
foreach (var item in weekInfos)
{
// Use taxYear in here
}
答案 1 :(得分:0)
您可以投射项目,例如: U_Weeks_In_Month =(短)item.WeekNumber,
但我会检查为什么item.WeekNumber是一个整数并更正它(假设代码是你的)。
答案 2 :(得分:0)
似乎item.WeekNumber
属于int
类型。在这种情况下,编译器会给出正确的错误。如果您不确定解析是否成功,则应该使用short.Parse
或short.TryParse
。