我有一个数据库,如果没有收回所选的DVD(所以到达的日期是空的),它应该写入链接标签,说明DVD仍然是租来的:
var j = (from s in db.Rentals where s.MovieTitle == tb_movietitle.Text
select s.takenbackdate).FirstOrDefault();
if (j == null)
{
linkLabel1.Text = "The dvd is still rented";
}
else
{
linkLabel1.Text = "Rentable";
}
如果我使用First()
它表示它是空的,但是如果我使用FirstOrDefault()
它会向所有电影显示null
,即使它们已在数据库中取回日期。
答案 0 :(得分:1)
当文档谈论空时,他们谈论源,元素列表。
因此,如果FirstOrDefault
和First
获得没有元素的源,则会返回默认值或抛出异常。
'Empty'不会引用'empty'值,就像空值一样。
要获得你想要的东西,试试这个:
// Find the first DVD with the given title. If not found, an exception is thrown.
var j = (from s in db.Rentals where s.MovieTitle == tb_movietitle.Text).First();
// If the taken back date is null, it is still rented.
if (j.takenbackdate == null)
{
linkLabel1.Text = "The dvd is still rented";
}
else
{
linkLabel1.Text = "Rentable";
}
答案 1 :(得分:0)
您可以尝试这样:
var j = db.Rentals.Where(s=>s.MovieTitle.Contains(tb_movietitle.Text).Select(s=>s.takenbacktime ).FirstOrDefault();