性能方面,使用LINQ-To-SQL记录Take()记录的最佳方法是什么,但同时要查明是否还有更多?我目前正在做的是:
model.MyList = source.Take(11).ToList();
if (model.MyList.Count() > 10)
{
model.HasMore = true;
model.MyList= model.MyList.Take(10).ToList();
}
答案 0 :(得分:2)
您可以n + 1
,然后计算收到的项目。如果他们的计数大于n
,则会有更多记录(至少还有一个)。
请参阅您的代码,以下行model.MyList= model.MyList.Take(10).ToList();
会创建一个新列表。您只需删除现有列表的最后一项即可避免这样做:model.MyList.RemoveAt(model.MyList.Count - 1)
。列表越长,性能优势就越高。
model.MyList = source.Take(11).ToList();
if (model.MyList.Count > 10)
{
model.HasMore = true;
model.MyList.RemoveAt(model.MyList.Count - 1);
}