min*_*int 0 c# asp.net asp.net-mvc
我是MVC和数据库的新手,但我很确定我从数据库中获取数据的方式非常低效.
public class PokemonViewController : Controller
{
private PokemonDayCareDBEntities1 db = new PokemonDayCareDBEntities1();
[Authorize]
public ActionResult Pokemon(int id)
{
var pkmn = db.PlayerPkmns.ToList();
PlayerPkmn thispkmn = null;
//get pokemon from database where id = id
foreach (var item in pkmn)
{
if (item.Id == id)
{
thispkmn = item;
}
}
....
Run Code Online (Sandbox Code Playgroud)
我有一个驻留在PlayerPkmns表中的Pokemon的唯一ID,但是我循环遍历整个表以找到匹配的ID.
根据表的大小,执行所需的时间会增加.
我很肯定有更好的方法 - 有人知道是否有一个(也就是如何使用它的语法)
谢谢!
SingleOrDefault 是你的朋友.
改变这个:
var pkmn = db.PlayerPkmns.ToList();
Run Code Online (Sandbox Code Playgroud)
至
var pkmn = db.PlayerPkmns.SingleOrDefault(x => x.Id == id);
Run Code Online (Sandbox Code Playgroud)
这将(大致)转换为以下SQL
SELECT TOP 1 * FROM PlayerPkmns WHERE ID = @id
Run Code Online (Sandbox Code Playgroud)