我将有这个bool函数检查是否包含记录是表中的最后一条记录,并根据其true
false
结果工作。
public bool IsLast(int? id) {
var islastcard = (from u in db.CardTables
where u.CardID == id
select u);
var alllist = (from u in db.CardTables
select u).ToList();
if (islastcard.Equals(alllist[alllist.Count - 1])) {
return true;
}
else {
return false;
}
}
它检查记录islastcard
是否是表alllist
中的最后一个,如果它是最后一个,那么我正在根据这些bool结果工作-
var uploadedfile = (from u in db.CardTables
where u.CardID == cardtable.cardID
select new CardModel {
cardID = cardtable.cardID,
}).SingleOrDefault();
if (IsLast(uploadedfile.cardID)) {
ViewBag.lastitem = true;
}
else {
ViewBag.lastitem = false;
}
但是这个检查总是返回false
。
我如何匹配islastcard
记录是否最后从列表alllist
或不是?
这是因为您的islastcard
是包含您的卡片的IEnumerable
,而不是卡片本身。如果您添加Single
的调用,您的代码应该工作:
var last = islastcard.SingleOrDefault()
return last != null && last.Equals(alllist[alllist.Count - 1]));
但是,您的代码仍然非常低效,因为您检索整个列表,检查其最后一项,然后丢弃它。此外,您还可以实例化card对象,以便根据它们的id进行检查。
更好的方法是直接检查最后一项的ID,如下所示:
public bool IsLast(int? id) {
return id == db.CardTables.Select(c => c.CardID).LastOrDefault();
}