c# - 如何将匿名类型变量从使用范围传播到外部?
问题描述
// var outterResult = null;
using (var ctx = new TIS2APPContext())
{
var results = (
from t in (
from route in ctx.ROUTEs
join rstop in ctx.RSTOPs on route.ROUTEID equals rstop.ROUTEID
join stop in ctx.STOPs on rstop.STOPID equals stop.STOPID
select new { Route = route, RStop = rstop, Stop = stop }
).ToArray()
group new { RStop = t.RStop, Stop = t.Stop } by t.Route into g
select new { Route = g.Key, Stops = g.ToArray() }
).ToArray();
}
假设我在一个using
范围内有一个复杂的 LINQ 结果。有没有办法让它逃到外面的世界?重点是匿名类型,在这种情况下我不打算创建一个实际的类。
提前致谢。
解决方案
您不能为匿名对象声明类型,但是如果您在外部范围内使用具有相同字段的匿名对象,则可以给它一个提示。字段可以有虚拟值。
但是,您仍然受限于执行方法的范围。要在方法之外使用它,您需要将结果映射到元组,如果您不想使用类
var results = new[]
{
new { Route = string.Empty, Stops = new List<string>() }
};
using (var db = new DbContext(""))
{
results = (from o in db.Set<object>()
select new { Route = string.Empty, Stops = new List<string>() }
).ToArray();
}
推荐阅读
- unity3d - FileNotFoundException: Temp\gradleOut\build\outputs\bundle\release\gradleOut.aab 不存在
- c - 如果编译器要求程序中给出更多数量的输入,那么程序中是否有任何错误
- azure - 使用 Terraform 将托管身份访问权限分配给应用程序角色
- mysql - MySQL 意外关闭。(XAMPP)
- android - 如何在 android studio 中导入或打开 react-native 项目?
- python-3.x - python3奇怪的文件路径问题;代码本身没有错误;纯粹为了知识
- python - 如何在 Pandas 中从列转向行
- bash - 我想重新执行之前使用的第 n 个命令和最后一个名称以 m 开头的命令
- python-3.x - AWS Lambda Python Jinja2 模板从 S3 加载 json
- c++ - 在 file.exe 中的 0x7A2A93B6 (vcruntime140d.dll) 处引发异常:0xC0000005:访问冲突读取位置 0xCDCDCDCD