为什么mycode的行2无法读取:
var allResarchs = db.Researchs;
allResarchs.Where(a => a.ChiefManagerId == 1);
allResarchs.ToList();
LINQ不会改变输入序列!
allResearches.Where(research => research.ChiefManagerId == 1);
该声明不会改变allResearches。你可以做到以下几点。 (顺便说一下,我已经改变了var
到实际的返回类型,让你更好地了解正在发生的事情。)
IQueryable<Research> queryResearches = db.Researches;
IQueryable<Research> queryResearchesWithId1 = queryResearches
.Where(research => research.ChiefManagerId == 1);
List<Research> researchesWithId1 = queryResearchedWithId1.ToList();
要知道,直到最后一条语句不执行查询时,没有与数据库中没有沟通呢。只有最后声明将实际接触数据库。
当然,你可以把它全部写在一个声明。然而,这不会很大地改善性能:
var researchesWithId1 = db.Researches
.Where(research => research.ChiefManagerId == 1)
.ToList();
你永远不Where语句的值设置为变量。
var allResarchs = db.Researchs.Where(a => a.ChiefManagerId == 1).ToList();
您应该分配LINQ
查询的结果:
var allResarchs = db.Researchs;
var filtered = allResarchs.Where(a => a.ChiefManagerId == 1);
var list = filtered.ToList();
你还可以做更简单的方式(如果你不需要中间结果):
var list = db.Researchs.Where(a => a.ChiefManagerId == 1).ToList();