我将使用此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
的最后?
答案 0 :(得分:4)
这是因为您的islastcard
是IEnumerable
,其中包含您的卡,而不是卡本身。如果您向其添加Single
,则代码应该有效:
var last = islastcard.SingleOrDefault()
return last != null && last.Equals(alllist[alllist.Count - 1]));
但是,您的代码仍然非常低效,因为您检索整个列表,检查其最后一个itmem,然后将其丢弃。此外,您可以为可以根据其ID检查的内容实例化卡片对象。
更好的方法是直接检查最后一项的ID,如下所示:
public bool IsLast(int? id) {
return id == db.CardTables.Select(c => c.CardID).LastOrDefault();
}