【问题标题】:Saving Items from Listbox to SQL Server table using LINQ使用 LINQ 将列表框中的项目保存到 SQL Server 表
【发布时间】:2013-05-23 21:30:33
【问题描述】:

我的 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 方面的专家

【问题讨论】:

  • 你在使用 Linq2SQL(DBContext 等)吗?

标签: c# sql-server wpf linq


【解决方案1】:

好的,这是一个从 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 块中,您可以使用接受双精度和字符串并执行赋值的构造函数。届时我们将知道这两个值,这将是一个更简洁的解决方案。

【讨论】:

  • 谢谢@evanmcdonnal 链接会很有帮助,我已经添加了缺少的代码
  • @MichaelGoyote 您仍然缺少实际创建数据库连接的代码。如果您正在使用 SQLConnector,您将在初始化对象时看到它,并将连接字符串传递给它。然后你准备一个命令,然后你执行。这几行代码是您实际使用 EF 进行插入时可能需要做的事情,但这假设您已经设置了模型并且您已经初始化了上下文等。据我所知,该方法的范围内没有上下文。
  • 我相信你问的是连接字符串,我有一些其他的形式可以执行 CRUD 功能,所以连接到数据库不是问题,但是获取这两项不同的数据列表框中的类型。
  • @MichaelGoyote 如果您可以提供有关该列表内容的更多信息,我将编写代码将其转换为学生列表。我只需要一些信息,比如每个偶数值都是字符串,每个奇数值都是双精度值吗?
  • 有两个列表框,列表框 A 是使用此查询从 SQL 填充的 var items = from r in dc.Students select r; lstBoxA.ItemsSource = 项目; SQL 中的表具有以下字段 StudentID、StudentName、StudentMarks 用户然后选择她/他想要移动到列表框 B 的学生。现在列表 B 中的学生和他们的标记随后被插入到不同的表中。挑战是从列表框 B 中取出学生列表并将它们插入到 SQL 不同的表中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-29
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
相关资源
最近更新 更多