与下面的代码相混淆。
我的课程如下
public class Counter
{
public Double NormalCounter { get; set; }
public Double SATCounter { get; set; }
public Double SUNCounter { get; set; }
}
在我的主要课程中我有办法做一些计算来填补计数器
Counter CountHrs = GetBookedHours(resourceBkg, PrevEvent);
var lstExpResult = new List<string> {CountHrs.NormalCounter.ToString(),
CountHrs.SATCounter.ToString(),
CountHrs.SUNCounter.ToString()};
UpdateBooking(bookingSesid, lstExpResult);
假设我在计数器中有如下的值
NormalCounter = 4
SATCounter = 10
SUNCounter = 6
我正在尝试添加到字符串列表并更新数据库。这是正确的方法吗?或者我有任何其他选择。
我的更新预订方法如下所示。
public static bool UpdateBooking(string BookingSesid,List<string>HoursByRate)
{
SchedwinEntities db = new SchedwinEntities();
string value = string.Empty;
for (int i = 0; i < 5; i++)
{
string str = " ";
if (i < HoursByRate.Count())
{
str = HoursByRate[i];
value += str + ((char)13).ToString() + ((char)10).ToString();
}
}
var query =
from SEVTs in db.SEVTs
where
SEVTs.SESID.Trim() == BookingSesid//SESID
select SEVTs;
foreach (var SEVTs in query)
{
SEVTs.USER3 = value;//value
}
try
{
db.SaveChanges();
return true;
}
catch (UpdateException ex)
{
return false;
}
}
答案 0 :(得分:3)
您应该传递键值对列表,从它们构造参数化语句,并使用键值对列表来绑定参数,而不是传递表示double
的字符串列表。价值观,如下:
class SqlParamBinding {
string Name {get;set;}
object Value {get;set;}
}
var lstExpResult = new List<SqlParamBinding> {
new SqlParamBinding { Name = "NormalCounter", Value = CountHrs.NormalCounter}
, new SqlParamBinding { Name = "SATCounter", Value = CountHrs.SATCounter}
, new SqlParamBinding { Name = "SUNCounter", Value = CountHrs.SUNCounter}
};
UpdateBooking(bookingSesid, lstExpResult);
现在lstExpResult
将名称与值分开,您的UpdateBooking
代码可以将SQL表达式格式化为
WHERE NormalCounter=@NormalCounter AND SATCounter=@SATCounter AND ...
然后将@NormalCounter
,@SATCounter
和@SUNCounter
绑定到lstExpResult
列表中传递的值。
答案 1 :(得分:0)
如果要进入Counter类列表,则使用List而不是List。看起来您可能有大量可能正在更新或发送到数据库的Counter对象。
Counter c = new Counter();
c. NormalCounter = 4
c.SATCounter = 10
c.SunCounter = 10
List<Counter> listCounter = new List<Counter>
listCounter.Add(c);
代码更易于维护和阅读。
如果您一次发送一个对象,则根本不需要列表。您可以将计数器对象传递给UpdateMethod,并在更新数据库时对其进行解析。