为什么无法读取mycode的第2行:
var allResarchs = db.Researchs;
allResarchs.Where(a => a.ChiefManagerId == 1);
allResarchs.ToList();
答案 0 :(得分:2)
您永远不会将Where语句的值设置为变量。
var allResarchs = db.Researchs.Where(a => a.ChiefManagerId == 1).ToList();
答案 1 :(得分:2)
您应分配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();
答案 2 :(得分:1)
Linq永远不会更改输入顺序!
initialize
此语句不会更改allResearches。您可以执行以下操作。 (顺便说一下,我已经将allResearches.Where(research => research.ChiefManagerId == 1);
更改为实际的返回类型,因此您可以更好地了解发生了什么。)
var
请注意,直到未执行最后一条查询查询,才与数据库没有通信。实际上只有最后一条语句会与数据库联系。
当然,您可以全部用一条语句编写它。但是,这不会大大提高性能:
IQueryable<Research> queryResearches = db.Researches;
IQueryable<Research> queryResearchesWithId1 = queryResearches
.Where(research => research.ChiefManagerId == 1);
List<Research> researchesWithId1 = queryResearchedWithId1.ToList();