我是LINQ的新手,到目前为止我很喜欢它,但是我试图通过请求单个记录(学生)来加载某些形式.如果这不存在我想要默认值,即空字符串假bool ...
所以我用过:
db = new DataClassesDataContext();
student = db.ss_students.SingleOrDefault(p => p.student_id == studentID);
txtRegNumber.EditValue = student.car_reg_no;
Run Code Online (Sandbox Code Playgroud)
这在student.car_reg_no的分配上失败了.我意识到我似乎误解了SingleOrDefault方法,如果找不到记录,它实际上会为学生返回null.我出于某种原因认为它会返回每个字段的默认值,例如student.car_reg_no.我想我仍然在数据库模式下思考.
这不是我可以做这样的代码的问题:
db = new DataClassesDataContext();
student = db.ss_students.SingleOrDefault(p => p.student_id == studentID);
if (student != null)
{
txtRegNumber.Text = student.car_reg_no;
//assign more control values
}
Run Code Online (Sandbox Code Playgroud)
默认值可以分配给else中的控件,也可以直接分配给表单.
但这是正确的做法还是我错过了什么?
编辑 感谢帖子到目前为止我已经开始采用Marc Gravell建议的方法.我现在有点进一步了.
我现在正在尝试将数据保存回数据库,如果我正在更新或插入记录,我将如何知道.我应该添加bool来记录这个或者是他们的内置方式.
SingleOrDefault返回返回类型的默认值.这是
Nullable<T>,它是null对于类,你得到null - 这主要是一种检查"它存在吗?"的方法.只是自己创建实际的默认值...也许:
YourType x = query.SingleOrDefault() ?? new YourType();
Run Code Online (Sandbox Code Playgroud)
new ...如果左侧为空,则此"空合并"方法仅执行右侧().或者更简单:
YourType x = query.SingleOrDefault();
if(x==null) { // use a default
x = new YourType();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3533 次 |
| 最近记录: |