Linq查询下一行

时间:2019-01-29 09:42:30

标签: c# linq

为什么无法读取mycode的第2行:

var allResarchs = db.Researchs;
allResarchs.Where(a => a.ChiefManagerId == 1);
allResarchs.ToList();

3 个答案:

答案 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();