Linq Select是否在一个单独的函数中是异步的?
本文关键字:函数 单独 异步 一个 是否 Select Linq | 更新日期: 2023-09-27 18:02:47
我的情况如下:
我有一个c# API Get函数,里面包含一个全局变量(最后返回)和几个函数,如下所示:
public Dictionary<...,...> Get()
{
getDataFromLinQ(); //inside this, there is a LinQ select
processRawLinQData(); //this processes raw data, and store it into dictResult
return dictResult;
}
如果我这样写,它将不返回结果,因为它似乎没有等待LinQ先完成select。
但是,如果我这样写:
public Dictionary<...,...> Get()
{
//execute linq directly, but not inside a separate function
IQueryable<table1> linQResult = from t1 in db.table1
where t1...
select t1;
foreach(table1 x in linQResult)
{
//do processing and store in some variables.
}
processRawLinQData();
return dictResult;
}
这将工作。但是为什么呢?
是LinQ选择异步方法或它的行为不同,如果我把它放在另一个函数?
注。1. 我更喜欢方法1(使用函数),因为代码更具可读性。2. 我在开发/活动服务器上注意到这个场景。
Linq是懒惰的…如果不使用它,或者使用ToList()
来强制执行结果,则在不需要时可能不会调用它。
你有一个方法调用…它进去,有一些linq,说…如果需要的话,我会调用它,然后返回。
然后其他方法假设你的查询完成并返回一些东西…但是你现在在一个完全不同的地方。
我不确定我是否表达了我的观点…但也许能帮到你。