使用LINQ将项目从Listbox保存到SQL Server表

时间:2013-05-23 21:30:34

标签: c# sql-server wpf linq

我有以下项目A(字符串)和项目B(十进制)在我的WPF ListBox中。我打算 使用相应的数据类型将它们保存到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的瘦身

1 个答案:

答案 0 :(得分: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循环而不是每个循环使得我可以使用mod运算符来检查值是double还是字符串。双打应该先到,所以我把它放在一个临时变量中。如果它是一个双重解析它并将结果分配给配音。因为如果i%2!= 0我们正在处理对,那么当前项是一个名称,这就是我使用else块安全的原因。在else块中,我分配一个新的学生对象并使用当前项设置名称。然后我用我的缓存双精度设置标记。那时我可以将它添加到列表中。或者在else块中,您可以使用接受double和string的构造函数并执行赋值。我们将在那时知道这两个值,这将是一个更清洁的解决方案。