use*_*213 1 c# linq asp.net-mvc-4
我将使用这个 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;
}
}
Run Code Online (Sandbox Code Playgroud)
它检查记录是否islastcard是表中的最后一个alllist,如果它是最后一个,那么我正在根据这些布尔结果工作-
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;
}
Run Code Online (Sandbox Code Playgroud)
但是这张支票总是给我回报false。
如何匹配islastcard记录是否是列表中的最后一个alllist?
这是因为您的islastcard是IEnumerable包含您的卡,而不是卡本身。如果你添加一个调用Single它,你的代码应该可以工作:
var last = islastcard.SingleOrDefault()
return last != null && last.Equals(alllist[alllist.Count - 1]));
Run Code Online (Sandbox Code Playgroud)
但是,您的代码仍然非常低效,因为您检索整个列表,检查其最后一个 itemmem,然后将其丢弃。此外,您可以针对可以根据其 ID 进行检查的内容实例化卡片对象。
更好的方法是直接检查最后一项的 ID,如下所示:
public bool IsLast(int? id) {
return id == db.CardTables.Select(c => c.CardID).LastOrDefault();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2042 次 |
| 最近记录: |