IQueryable. groupby()查询引用类型
本文关键字:查询 引用类型 groupby IQueryable | 更新日期: 2023-09-27 18:06:29
使用Linq to SQL,我正在编写利用IQueryable的查询。GroupBy方法。
尽管我的查询涉及许多表和左连接,但为了说明,我们只使用两个表。TableA和TableB是一对多关系
var queryResults = from db.TableA
.Join(db.TableB, tA => tA.ID, tB => tB.TableA_ID, (ta, tb) => tb)
.GroupBy(tb => tb.TableA);
这将给我一个
<IQueryable<IGrouping<TableA, TableB>>
从表面上看,这似乎是可行的,但我很担心,因为我正在调用GroupBy方法并传递keySelector参数的引用类型。
请告诉我为什么这样做是安全的
很难说你想做什么,但我认为你可能想在这里使用理解语法,使其更容易编写/理解。特别是,在完成任何连接或其他操作后,将分组,而不是将它们混合在一起。
var query = ... (can be chained methods, whatever)
var grouped = from row in query
group row by row.SomeProperty;
那么你可能会有一个更容易的时间(我认为)编写和推理的查询
试试这个:
var queryResults =
from ta in db.TableA
join tb in db.TableB on ta.ID equals tb.TableA_ID
group tb by ta;
是的,这在引用类型上是安全的。linq-to-sql生成的查询与引用类型无关——它只是SQL。