C# 将双精度字符串列表作为字符串发送到数据库

C# 将双精度字符串列表作为字符串发送到数据库,c#,C#,只是对下面的代码感到很困惑 我有下面这样的课 public class Counter { public Double NormalCounter { get; set; } public Double SATCounter { get; set; } public Double SUNCounter { get; set; } } 在我的主课上,我有一种方法来计算填充计数器 Counter CountHrs = GetBookedHours(re

只是对下面的代码感到很困惑

我有下面这样的课

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);
计数器CountHrs=GetBookedHours(resourceBkg,PrevEvent);
var lstExpResult=新列表{CountHrs.NormalCounter.ToString(),
CountHrs.SATCounter.ToString(),
CountHrs.SUNCounter.ToString()};
更新记账(bookingSesid、lstExpResult);
假设计数器中的值如下所示

Counter CountHrs = GetBookedHours(resourceBkg, PrevEvent);
var lstExpResult = new List<string> {CountHrs.NormalCounter.ToString(),
                                     CountHrs.SATCounter.ToString(), 
                                     CountHrs.SUNCounter.ToString()};
UpdateBooking(bookingSesid, lstExpResult);
正常计数器=4

卫星计数器=10

太阳计数器=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;
        }
    }
publicstaticboolupdatebooking(stringbookingsesid,ListHoursByRate)
{
SchedwinEntities db=新的SchedwinEntities();
字符串值=string.Empty;
对于(int i=0;i<5;i++)
{
字符串str=“”;
如果(i
您应该传递键值对列表,从中构造参数大小的语句,并使用键值对列表绑定参数值,而不是传递表示双
的字符串列表,如下所示:

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);

然后将
@NormalCounter
@SATCounter
@SUNCounter
绑定到
lstexpreult
列表中传递的值。

与其传递表示
双精度的字符串列表,不如传递键值对列表,从中构造参数大小的语句,并使用键值对列表绑定参数值,如下所示:

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);

然后将
@NormalCounter
@SATCounter
@SUNCounter
绑定到
lstexpreult
列表中传递的值。

如果它要列出计数器类,则使用列表而不是列表。看起来可能有一堆计数器对象正在更新或发送到数据库

    Counter c = new Counter();
    c. NormalCounter = 4
    c.SATCounter = 10
    c.SunCounter = 10

    List<Counter> listCounter = new List<Counter>
    listCounter.Add(c);
计数器c=新计数器();
C正常计数器=4
c、 卫星计数器=10
c、 太阳计数器=10
列表计数器=新列表
添加(c);
代码更易于维护和可读


如果您一次发送一个对象,那么根本不需要列表。您可以将计数器对象传递给UpdateMethod,并在更新数据库时对其进行解析。

如果它要列出计数器类,则使用list而不是list。看起来可能有一堆计数器对象正在更新或发送到数据库

    Counter c = new Counter();
    c. NormalCounter = 4
    c.SATCounter = 10
    c.SunCounter = 10

    List<Counter> listCounter = new List<Counter>
    listCounter.Add(c);
计数器c=新计数器();
C正常计数器=4
c、 卫星计数器=10
c、 太阳计数器=10
列表计数器=新列表
添加(c);
代码更易于维护和可读


如果您一次发送一个对象,那么根本不需要列表。你可以将计数器对象传递到你的更新方法,并在更新数据库时解析它。

我的C++也表示如果你有计数器,你应该使用整数类型,因为双打不能保证保持在精确的值上,但是,我们不知道你在做什么。我不知道为什么我对这个问题持否定态度?我猜是因为这个问题的第一次迭代不清楚。(我没有投票给你,这只是我的猜测)。任何方式感谢很多缰绳和其他C++中我也说你应该使用整数类型,如果你有计数器,因为双打不能保证停留在精确的值,但再次,我们不知道你在做什么。我不知道为什么我对这个问题持否定态度?我猜是因为这个问题的第一次迭代不清楚。(我没有否决你,这只是我的猜测)。无论如何,非常感谢rein和其他Hanks@opensourcelover,如果你看到我的更新方法将采用字符串列表,这就是为什么我尝试上面的选项,否则你的将是最简单和简洁的。谢谢@opensourcelover,如果你看到我的更新方法将采用字符串列表,这就是为什么我要尝试上面的选项,否则你的是最简单和整洁的一个。
    Counter c = new Counter();
    c. NormalCounter = 4
    c.SATCounter = 10
    c.SunCounter = 10

    List<Counter> listCounter = new List<Counter>
    listCounter.Add(c);