0

我的 WPF 列表框中有以下项目 A(字符串)和项目 B(十进制)。我打算
将它们保存到具有相应数据类型的 MS SQL 数据库中的表中。

  DataClasses1DataContext dc = new DataClasses1DataContext();
 foreach (var items in MyListBox.Items)
       { 
            //I was thinking in this terms but I doubt if its the correct code
           items=MyListBox.Items.Cast<String>().ToList();

            //
            //Then use this Linq Statement to insert the data
            Student std = new Student();
            std.Name=items
            std.Marks=items
            dc.Student.InsertOnSubmit(std);
            dc.SubmitChanges();
        }

需要任何澄清请询问,我仍然是 C#、wpf、Linq 的精益者

4

1 回答 1

0

好的,这是一个从 ListBox 的内容创建学生列表的算法。这里没有错误检查,因此您必须稍后根据您的需要进行处理。我会在底部做一点解释。

List<Student> students = new List<Student>();
double dub = 0;
items = MyListBox.Items.Cast<String>().ToList();

for (int i = 0; i < items.Length; i++)
{
     if (i % 2 == 0)
     {
         dub = double.Parse(items[i]);
     }
     else
     {
         Student s = new Student();
         s.Name = items[i];
         s.Marks = dub;
         students.Add(s);
     }
}

好的,这就是它的工作原理。在循环之外,我分配了一个学生列表,我们需要它来保存来自列表框的未知数量的学生。我使用了 for 循环而不是 for each,以便我可以使用 mod 运算符来检查值是双精度值还是字符串。双打应该放在第一位,所以我将它保存在一个临时变量中。如果它是双精度的,我会解析它并将结果分配给配音。因为如果 i % 2 != 0 则我们正在处理对,那么当前项目是一个名称,这就是为什么我使用 else 块是安全的。在 else 块中,我分配了一个新的学生对象并使用当前项目设置名称。然后我用缓存的双精度设置标记。那时我可以将它添加到列表中。或者,在 else 块中,您可以使用接受双精度和字符串并执行赋值的构造函数。

于 2013-05-23T21:46:19.623 回答