我有以下项目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的瘦身
答案 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的构造函数并执行赋值。我们将在那时知道这两个值,这将是一个更清洁的解决方案。