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

本文关键字:保存 SQL Server 列表 LINQ 项目 使用 | 更新日期: 2023-09-27 18:15:00

我在我的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的精简者

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

好了,下面是一个从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操作符来检查值是双精度还是字符串。双精度应该放在第一位,所以我把它保存在一个临时变量中。如果它是双精度,我解析它并将结果赋值给dub。因为我们处理的是对,如果i % 2 != 0,那么当前项是一个名称,这就是为什么我使用else块是安全的。在else块中,我分配了一个新的student对象,并用当前项设置名称。然后我用缓存的double设置标记。这样我就可以把它加到列表里了。或者,在else块中,您可以使用一个构造函数,该构造函数接受双精度类型和字符串类型并执行赋值操作。此时我们就知道两个值了这样就更简洁了